我在表单中使用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相关的安全拒绝。
答案 0 :(得分:3)
这可能是IE9因未识别字符集而导致的错误。我不得不面对类似的问题。
我这应该有帮助
$.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"});
答案 1 :(得分:0)
json甚至服务器响应都不是问题。正如我可以看到你的更新,问题与我的相同,IE根本不允许提交,所以没有请求=没有响应。
我试图找出问题是什么,作者页面上的示例有效 - 我的不是。