IE9中的jQuery表单插件中没有JSON响应

时间:2012-10-14 10:13:52

标签: php jquery ajax json

我在表单中使用http://www.malsup.com/jquery/form/#ajaxForm。 我设置了一个表单,通过Ajax将图像上传到服务器。没有IE9 :)一切正常。 我无法从服务器获得JSON响应,尽管在其他浏览器上它可以正常工作。 我试图在success函数中放置一些alert(),但它看起来成功函数不是加载事件的。

我的JS代码:

$(function() {

    $('#upload-image').ajaxForm({
        dataType:  'json',
        success: processJson
    });

    function processJson(data) {
        var i = 0;
        $.each(data, function(key, val) {
            $('<li id="image_' + key + '"><input type="checkbox" name="delete_image[' + key + ']" /><img src="' + val + '" alt=""/></li>').hide().appendTo('#images').delay(i).fadeIn('slow');
            i += 1000;
        });
    }

});

以及在PHP中生成JSON响应的代码:

    $output = array();

    foreach ($files['Filedata'] as $file)
    {
        $file_arr = $this->_save_image($file);

        $image = ORM::factory('image');

        $image->filename = $file_arr['filename'];
        $image->gallery_id = $gallery_id;
        $image->save();

        $output[$image->id] = Route::get('uploads')->uri(array('dir' => 'images/120x120', 'file' => $image->filename));

    }
    $this->request->headers('Content-type','application/json; charset='.Kohana::$charset);
    $this->response->body(json_encode($output));

我发现了一些关于类似问题的帖子(从响应中删除html标签),但它对我没有帮助。 有什么问题?

编辑: IE调试模式告诉我,使用“form.submit();”行拒绝访问在jQuery表单插件库中。 它似乎是某种与在localhost上运行javascript相关的安全拒绝。

2 个答案:

答案 0 :(得分:3)

这可能是IE9因未识别字符集而导致的错误。我不得不面对类似的问题。

我这应该有帮助

$.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"});

答案 1 :(得分:0)

json甚至服务器响应都不是问题。正如我可以看到你的更新,问题与我的相同,IE根本不允许提交,所以没有请求=没有响应。

我试图找出问题是什么,作者页面上的示例有效 - 我的不是。