ajax代码返回ProgressEvent对象而不是我的模板数据

时间:2016-03-19 13:58:16

标签: javascript ajax

我正在尝试通过添加一些ajax来改进几页上的UX。我有一个ajax请求:

var xhr = new XMLHttpRequest();
xhr.open('POST', '/search/', true);
xhr.onload = function(data){
   document.getElementById("search-results-container").innerHTML = data; 
}
xhr.setRequestHeader("X-CSRFToken", csrftoken);
xhr.send(form_data);

这不是从我的django开发服务器给我渲染的模板。相反,我在[object ProgressEvent] div中获得了#search-results-container。如果我同步提交请求,django视图会正确呈现。

我可能完全误解the spec,但我不应该从服务器直接获取模板数据+ http标头吗?我在这做错了什么?

1 个答案:

答案 0 :(得分:2)

XHR事件的事件处理程序是传递事件对象。较新的浏览器支持ProgressEvent API。然而,那些不能从请求中提供数据的人;为此,您需要保留对XHR对象本身的访问权限。一旦HTTP请求实际完成,.responseText和(如果合适).responseXML属性将包含您的响应内容(在您的" load"处理程序中,它将具有)。

相关问题