作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个向 C# HttpHandler 发出 ajax jsonp 请求的应用程序。
function RequestData() {
var parameters = 'value1=' + value + '&value2=' + value2;
$.ajax({
type: "GET",
url: 'https://localhost:44300/checkvalues?' + parameters,
dataType: "jsonp",
headers: { "cache-control": "no-cache" },
success: function (msg) {
alert('all good')
},
error: function (jqXHR, exception) {
alert(jqXHR.status);
}
});
这是一些服务器端代码。
if (OK)
{
response.ContentEncoding = System.Text.Encoding.UTF8;
response.ContentType = "application/javascript";
response.Write(callback + "({ data: 'allOK' });");
}
else
{
//error
response.StatusCode = 500;
response.SuppressFormsAuthenticationRedirect = true;
response.StatusDescription = "error";
response.End();
}
当 OK 为 true 时,就没有问题。 ajax success 函数按预期被调用。但是当我将响应状态代码设置为例如500 触发 ajax 请求的错误部分,服务器响应从未收到 - 什么也没有发生。
如何修改我的响应代码以进入 ajax 错误部分?
我可以通过更改响应来触发解析错误,但我想使用 Http 状态代码来实现。
最佳答案
您可以检测到 JSONp 错误。我不确定为什么 jQuery 选择不这样做。
这是一个不使用 jQuery 的 JSONp 实现。您可能需要稍微修改一下才能使其正常工作。例如,我不确定 jQuery 如何传达 callback_name
。
function jsonp(success_callback, error_callback) {
var script, callback_name;
var parameters = 'value1=' + value + '&value2=' + value2;
callback_name = "generate random name";
function after() {
setTimeout(function () {
document.getElementsByTagName("head")[0].removeChild(script);
}, 1);
}
script = document.createElement('script');
window[callback_name] = function (response) {
after();
success_callback(response);
};
script.type = 'text/javascript';
script.src = "https://localhost:44300/checkvalues?" + parameters + "&callback=" + callback_name;
script.async = true;
script.addEventListener('error', function () {
after();
error_callback();
});
document.getElementsByTagName("head")[0].appendChild(script);
}
jsonp(function () {
alert("success");
}, function () {
alert("failure");
});
关于javascript - 如何用状态码 500 响应 ajax jsonp 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35556141/
我是一名优秀的程序员,十分优秀!