2

我在表单中使用http://www.malsup.com/jquery/form/#ajaxForm 。我设置了一个表单来通过 Ajax 将图像上传到服务器。没有 IE9 一切正常 :)。我无法从服务器获得 JSON 响应,尽管在其他浏览器上它可以正常工作。我试图在成功函数中放置一些 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 相关的安全拒绝。

4

2 回答 2

3

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

我这应该有帮助

$.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"});
于 2012-10-14T10:24:28.080 回答
0

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

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

于 2012-10-15T12:43:27.093 回答