大家好,感谢您的时间。 这是我的javascript:
$('.sender').click(function (e) {
$.ajax({
type: "POST",
url: "fHandler.ashx",
data: { firstName: 'stack', lastName: 'overflow' },
// DO NOT SET CONTENT TYPE to json
// contentType: "application/json; charset=utf-8",
// DataType needs to stay, otherwise the response object
// will be treated as a single string
dataType: "json",
success: function (response) {
alert('success');
},
error: function (response) {
alert('error: ' + response);
console.log('err: '+response);
}
});
});
以下是我的.ashx
处理程序中的代码:
public void ProcessRequest(HttpContext context)
{
context.Response.AppendHeader("Access-Control-Allow-Origin", "*");//to fix the allow origin problem
context.Response.ContentType = "text/plain";
string json = new StreamReader(context.Request.InputStream).ReadToEnd();
context.Response.Write(json);
}
public bool IsReusable
{
get
{
return false;
}
}
当点击事件有效时,我的Ajax
请求似乎没有得到任何回复,因为成功时的提示不会弹出。我已经使用浏览器的网络控制台进行了调试,它返回了预期的响应,但它似乎无法在JavaScript
代码中达到成功功能。欢迎任何见解或建议。感谢。
答案 0 :(得分:0)
如果您仍然对答案感兴趣,请在执行请求之前尝试此操作
var data = { firstName: 'stack', lastName: 'overflow' };
var jsonData = JSON.stringify(data);
并将您的AJAX请求更改为
$.ajax({
type: "POST",
url: "fHandler.ashx",
data: jsonData,
dataType: 'json',
contentType: 'application/json; charset-utf-8'
})
.done(function (response) {
// do something nice
})
.fail(function (jqXHR, textStatus, errorThrown) {
console.log("request error");
console.log(textStatus);
console.log(errorThrown);
});
<强>解释强>
您正在尝试发送普通data
对象。您必须使用JSON.stringify(object)
将其转换为Json字符串。
更改dataType并非真正的解决方案,而是一种解决方法。
附加说明
此外,我认为您应该使用.done()
和.fail()
。 See here了解更多详情。