【发布时间】:2014-08-30 23:30:03
【问题描述】:
我有几种不同的形式,每种形式都返回不同的东西。我需要检测它是否是一个简单的字符串(所以我可以将它放在错误/状态区域)或者它的 javascript 我什么都不做并让它执行。
这就是我目前的检查方式,但我想确保这是 100% 坚固可靠......我想不出任何其他方式。
另一种选择是始终使用 JSON,但我需要一个 JSON shim,以及以某种方式尝试将 javascript 序列化为 JSON。
$.ajax({
type: 'POST',
url: form.attr('action'),
data: form.serialize()
})
.done(function(data, textStatus, xhr) {
if (!xhr.getResponseHeader('Content-Type').match(/text\/javascript/i)) {
form.find('.status').text(data).removeClass().addClass('status status-done').slideDown(200);
} else {
// this is where i do nothing and let JS run
}
})
以下工作,但我担心在某些极端情况下它不会工作(不确定可能是什么,但重要的是这部分工作 100%)
【问题讨论】:
-
为什么需要 JSON 垫片?您需要支持哪些古老的浏览器?我认为您在这里遇到了 XY 问题...
-
我建议您阅读 ajax 数据类型,因为您似乎得到了一些不好的信息。 api.jquery.com/jquery.ajax
-
那我应该如何区分 JSON 和 application/javascript?
-
@Tallboy 服务器/应用程序应该以
Content-Type: application/json响应或至少与 JSON 类似。 (除非是JSON-P。) -
我知道,但我的问题围绕着......让我的 .done() ajax 承诺确定响应是否为 application/json 的最佳方法是什么(在表单上方显示错误消息),或者... application/javascript (什么都不做,让 JS 执行。我不想将响应 JS 注入表单,所以我需要确定内容类型)
标签: javascript jquery ajax