jquery getResponseHeader总是返回’undefined’?
我有一个表格,我通过ajax提交。 我正在使用jquery表单插件。 我想要做的是获取从我的服务器返回的’Location’标题。 我可以在萤火虫中看到它。 但是每当我在成功回调中调用getResponseHeader()函数时,它总是返回’undefined’。
码:
form.ajaxForm({ dataType: 'xml', data: {format: 'xml'}, resetForm: true, success: function(xml,status,xhr){ var location = xhr.getResponseHeader('Location'); alert(location); });
位置未定义。 但我可以在萤火虫中看到“位置”标题。 我错过了什么? 即使我从xhr对象调用getAllResponseHeaders(),它也会返回’undefined’
如果这是一个CORS请求 ,您可能会看到调试工具中的所有标题(例如Chrome-> Inspect Element-> Network),但xHR对象只会检索标题(通过xhr.getResponseHeader('Header')
)标头是一个简单的响应标头 :
-
Content-Type
-
Last-modified
-
Content-Language
-
Cache-Control
-
Expires
-
Pragma
如果它不在此集中,则它必须存在于服务器返回的Access-Control-Expose-Headers标头中。
关于这个案例,如果它是一个CORS请求,那么当且仅当下面的标题也存在时,才能检索到XMLHttpRequest
对象的Location
头:
Access-Control-Expose-Headers: Location
如果它不是CORS请求, XMLHttpRequest
将检索它没有问题。
XMLHttpRequest将透明地遵循重定向 ,因此最终请求将不具有标头,它已经遵循该重定向并且您正在看到来自该请求的响应标头(而不是具有Location
标头的初始请求)。
我正在做类似的事情,使用rails / rest方式将带有Location头的201“created”返回给新对象和一个空体。 jQuery的ajax方法在遇到这个问题时会抛出一个“parseerror”,因为它期待json但什么都没有回来。 我只是在我的错误回调中捕获201重定向,如下所示:
function request_error(req, textStatus, errorThrown) { if (req.status == 201 ) { var created_loc = req.getResponseHeader('Location'); console.log('(201) created: ' + created_loc); // ... manual redirect here ie issue another ajax request to created_loc return; } // ... handle an actual error here }
希望这可以帮助!
- Paginate记录客户端问题
- jQuery的。 将JSON作为结果分配给变量
- 我正在尝试动态显示数据aj ajax
- Jquery Ajax将json发布到webservice
- 如何将隐藏字段中的变量发送到远程PHP文件,并在不使用jQuery刷新的情况下在Bootstrap模式中显示脚本的结果?
- 使用waitForKeyElements,是否可以阻止显示关键元素,并且只有在我的代码修改后才显示它?
- 为什么这个jQuery插件(Tooltipster)的Ajax内容仅在鼠标hover2次后显示?
- Woocommerce使用jQuery和ajax更改订单总数
- 如何使用ajax从另一个div(如iFrame)填充div中的xml doc?