jquery and IE submit, ajaxForm not working

iqmaker picture iqmaker · May 12, 2012 · Viewed 7.6k times · Source

I have a form:

<form method="post" action="/balda/server.wsgi" id="gameboard" name="gameboard" >

with a submit button:

<input type="submit" name="submit" value="Поиск" style="" onmouseover="CheckElements();">

the submit button should send ajax bind process:

jQuery(document).ready(function(){
    jQuery('#gameboard').submit( function() {
        $.ajax({
            url     : $(this).attr('action'),
            type    : $(this).attr('method'),
            dataType: 'json',
            data    : $(this).serialize(),
            success : function( data ) {
                       onAjaxSuccess( data );
                    }
        });
        return false;
    });
});

There are accepted function:

function onAjaxSuccess (result)

All this works fine in chrome, ff, opera, safari, but it does not work in Internet Explorer 9 (others not tried it)

In IE9, the result variable is empty. I tried another bind submit button like this:

$('document').ready(function( result )
{
    $('#gameboard').ajaxForm( {    
        type: "POST",
        data    : $(this).serialize(),
        success: onAjaxSuccess,
        dataType: 'json',
        error: function(){ alert ( 'Error loading data format.' ); }
    }); 
});

But the result is the same ff chrome safari opera work, except for IE9 .

Please tell me what could be the problem.

Answer

iqmaker picture iqmaker · May 13, 2012

The problem was that IE9 does not understand the format of "JSON" in the encoding cp1251, even though it is clearly stated in the response header. Translation of the JSON response in utf-8 solved the problem with IE9.