我将使用jquery表单插件上传文件,并询问$ .ajaxForm在响应数据为json时变为超时的过程现象。
服务器端的处理没有遇到任何麻烦,只要用firebug看到json格式,响应数据就会以形状返回。 但是,我认为$ .ajaxForm无法获取数据。此后,它是已处理代码的一部分。
code $('#upload').ajaxForm({ cache: false, dataType: 'json', type: 'POST', error: function(xhr ,status ,error ) { alert('error occured. Status:' + status + ' --Status Text:' + error + ' --Error Result:' + xhr.statusText); }, timeout: 1000, dataType:'json', data:{ 'path':'path' , 'type':'type' }, complete: function(){ alert('complete'); }, success:function(data){ alert('success'); }, });
response
(firebug)
header
Connection close
Content-Length 155
Content-Type application/json; charset=utf-8
Status 200
data
json
{"type":"json","message":"complete process"}
<i>(A browser)</i>
①download json data
②alert('error occured. Status:timeout --Status Text:timeout --Error Result:n/a')
③alert('complete')
</pre>
当dataType为html时,可以处理成功。 而且,当它是$ .ajax时,json就会成功。 是否有解决方案?它要求适当。
答案 0 :(得分:0)
尝试设置contentType
喜欢
$('#upload').ajaxForm({
cache: false,
dataType: 'json',
contentType:"application/json; charset=utf-8",
type: 'POST',
error: function(xhr ,status ,error ) {
alert('error occured. Status:' + status
+ ' --Status Text:' + error
+ ' --Error Result:' + xhr.statusText);
},
timeout: 1000,
data:{ 'path':'path' , 'type':'type' },
complete: function(){
alert('complete');
},
success:function(data){
alert('success');
},
});