我有一个像这样的ajax调用;
$.ajax({
type : 'GET',
url: 'url',
data: 'data='+data,
success: function(configOut) {
alert(configOut);
},
error: function(configOut) {
alert(configOut);
}
});
调用的视图执行以下操作:
command = ['python', 'autoDeploy.py']
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
out = p.stdout.read()
rv = p.wait()
if rv:
status = 400
else:
status = 200
return HttpResponse(out, content_type="text/plain", status=status)
在调试器中,我可以看到返回了以下内容:
(Pdb) print HttpResponse(out, content_type="text/plain", status=status)
Content-Type: text/plain
Invalid file format. Format is: "Toolname,Type,IPaddress,login,pw"
但是在成功或错误功能中,我似乎无法访问该文本。configOut具有:
Object {readyState: 0, setRequestHeader: function, getAllResponseHeaders: function, getResponseHeader: function, overrideMimeType: function…}
如何获得返回的文本?
我刚刚注意到的是,在Chrome开发者工具中,该请求的网络标签中的状态/文本列中,其显示为“(已取消)”(不确定)。如果我从浏览器中运行相同的请求,则会得到响应。
我对此进行了进一步调试,发现在服务器端出现“错误:(32,'管道破裂')”,谷歌搜索表明这是因为浏览器已经继续运行,因此没有任何内容可以接收到响应。我尝试将超时设置为较大的值,但没有任何乐趣。我该如何预防?似乎无法从浏览器发出同步请求。
我解决了这个问题-问题是我没有在ajax调用所包含的onclick处理程序中返回false。我在这里阅读:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句