我有一个看起来像这样的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,' Broken pipe')'谷歌搜索显示它是因为浏览器已经移动,所以没有什么可以收到响应。我已经尝试将超时设置为较大的值,但没有快乐。我怎么能防止这种情况?似乎无法从浏览器执行同步请求。
答案 0 :(得分:0)
我解决了这个问题 - 问题是我没有在acax调用是其中一部分的onclick处理程序中返回false。我在这里读到了这个:
jQuery Ajax requests are getting cancelled without being sent