C# 调用服务时不会触发Ajax成功事件
我正在使用JQuery将AJAX转换为本地服务。我的本地服务是一个HttpHandler,例如Request.ashx。在Request.ashx中,它的职责是呼叫外部网站,例如CallExternalWebsite。CallExternalWebsite使用.NET的System.NET.WebRequest来启动请求。访问外部网站时,不会触发成功或错误事件。注意:我也尝试过在IIS中托管WCF服务。我看到了同样的结果 以下是两种情况: 此场景在以下情况下起作用: 在ProcessRequest中,注释掉callExternalWebsite。 对于对象o,使用数据初始化以模拟结果。 点击我的按钮 成功事件在客户端上激发。 在Fiddler中,我可以看到标题信息。我看到Json结果等等。 此场景不起作用: 在ProcessRequest中,启用对callExternalWebsite的调用。 对于对象o,CallerExternalWebSite将返回一个适当的对象。 点击我的按钮 成功事件不会在客户端上激发。 在Fiddler中,我可以看到标题信息。我看到Json结果等等。 我知道callExternalWebsite正在工作,因为我让它将结果发送到我的手机。 总之,HttpHandler中的外部http调用正在影响Ajax成功事件 以下是AJAX调用的一个片段: 我在尝试不同的互动C# 调用服务时不会触发Ajax成功事件,c#,jquery,asp.net,ajax,C#,Jquery,Asp.net,Ajax,我正在使用JQuery将AJAX转换为本地服务。我的本地服务是一个HttpHandler,例如Request.ashx。在Request.ashx中,它的职责是呼叫外部网站,例如CallExternalWebsite。CallExternalWebsite使用.NET的System.NET.WebRequest来启动请求。访问外部网站时,不会触发成功或错误事件。注意:我也尝试过在IIS中托管WCF服务。我看到了同样的结果 以下是两种情况: 此场景在以下情况下起作用: 在ProcessReques
$(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);
}
有什么想法吗
谢谢
史蒂夫如果你这样做,会发生什么,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
});
});
});
您确定响应是HTTP 200/OK吗?我相信只有2xx的状态码才被视为成功。你能将代码发布到AjaxSuccessed吗?也许有问题。尝试将成功呼叫更改为alerthello!或者类似于确认未执行成功分支。我将成功更改为:success:functionmsg{alerthello;},但仍然没有执行。下面是Request.ashx调用返回的响应:HTTP/1.1 200 OK Cache Control:private Content Type:application/json;charset=utf-8服务器:Microsoft IIS/7.5 X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET日期:2012年4月13日星期五16:28:40 GMT内容长度:84一切正常。