我正在使用JQuery为本地服务制作AJAX。我的本地服务是HttpHandler(例如,Request.ashx)。在Request.ashx中,它的职责是调用外部网站(例如,CallExternalWebsite())。 CallExternalWebsite()使用.NET的System.Net.WebRequest()来发起请求。访问外部网站时,不会触发成功或错误事件。 (注意:我也试过这个在IIS中托管的WCF服务。我看到了相同的结果)
以下是两种情况:
此方案有效:
此方案无效:
总结一下,HttpHandler中的外部http调用正在影响Ajax成功事件。
以下是来自AJAX调用的片段: (我正在尝试不同的互动)
$(document).ready(function () {
$("#myButton").click(function (event) {
$.ajax({
cache: false,
type: "POST",
url: "http://localhost/Service/Request.ashx",
data: '{"id" : "053252f3"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
timeout: 20000,
success: function (msg) {
AjaxSucceeded(msg);
},
error: AjaxFailed
});
});
});
在HttpHandler Request.ashx中,
public Void ProcessRequest(httpContent context)
{
// Do some stuff....
// Make call to external web site
object o = callExternalWebsite (Uri, Data, "POST");
// Return results from callOtherWebsite
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
string json = javaScriptSerializer.Serialize(o);
context.Response.ContentType = "application/json";
context.Response.Write(json);
}
有什么想法吗?
感谢。
史蒂夫
答案 0 :(得分:0)
如果你这样做会发生什么,msg vs msg.d:
$(document).ready(function () {
$("#myButton").click(function (event) {
$.ajax({
cache: false,
type: "POST",
url: "http://localhost/Service/Request.ashx",
data: '{"id" : "053252f3"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
timeout: 20000,
success: function (msg) {
AjaxSucceeded(msg.d);
},
error: AjaxFailed
});
});
});