Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用服务时不会触发Ajax成功事件_C#_Jquery_Asp.net_Ajax - Fatal编程技术网

C# 调用服务时不会触发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

我正在使用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调用的一个片段: 我在尝试不同的互动

    $(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一切正常。