.Ajax方法适用于本地计算机,但不适用于服务器

时间:2012-02-27 02:16:58

标签: c# jquery asp.net ajax

我有一个.Ajax方法,它调用后面页面上的方法(做一些逻辑,然后调用WCF服务,然后返回一个对象),如下所示:

$.ajax({
            type: 'POST',
            url: 'MyPage.aspx/TestMethod',
            dataType: "json",
            contentType: "application/json",
            data: "{'Id': '" + Id + "'}",
            success: function (data) {
                $("#randomElement").html(data.d.Foo);
            },
            error: function ((xhr, textStatus, error){
            alert(xhr.statusText);
            alert(textStatus);
            alert(error);

        });

后面的页面:

  [System.Web.Services.WebMethod]
        public static MyObject TestMethod(string Id)
        {
            //Logic removed for readability!

            return MyService.GetStuff(Id);

        }

这在我的本地计算机上完全正常,但在部署到我的服务器时无法正常工作。

我已经确定不会调用后面的方法页面(即错误是调用TestMethod(),而不是调用服务的TestMethod())。

我还在.ajax方法之前发出了一个警告,告诉我我正在访问的页面的路径,以防它在实时服务器上用uri做一些有趣的事情,然后它返回“/ MyPage”。 aspx“正如我所料。”

我还将“url:”更改为完整的uri,看看是否有帮助,但事实并非如此。


关闭自定义错误后运行fiddler后,出现以下错误:

  

{“消息”:“线程被中止。”,“StackTrace”:“at   System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo   方法,对象目标,Object []参数,SignatureStruct& SIG,   MethodAttributes methodAttributes,RuntimeType typeOwner)\ r \ n at   System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo方法,   Object target,Object []参数,Signature sig,MethodAttributes   methodAttributes,RuntimeType typeOwner)\ r \ n at   System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags   invokeAttr,Binder binder,Object []参数,CultureInfo文化,   布尔值skipVisibilityChecks)\ r \ n at   System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags   invokeAttr,Binder binder,Object []参数,CultureInfo   文化)\ r \ n at   System.Web.Script.Services.WebServiceMethodData.CallMethod(对象   target,IDictionary 2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary 2个参数)\ r \ n at   System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext的   context,WebServiceMethodData methodData,IDictionary`2 rawParams)\ r \ n   在   System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext的   context,WebServiceMethodData   methodData)”, “ExceptionType”: “System.Threading.ThreadAbortException”}

3 个答案:

答案 0 :(得分:1)

您的JSON无效;你需要使用双引号:

data: '{"Id": "' + Id + '"}',

答案 1 :(得分:0)

对我来说,似乎没有在您的方法中发布正确的参数。

我从未像以前那样在.ajax方法中使用过数据选项。我用:

data: {Id: myId},

其中myId是保存您想传递的Id值的变量 - 没有任何引号。

\ r \ n通常与编码字符串相关,这不是在这里应该相关的东西,而且看起来你传递的是字符串数据:" {' Id' :'" + Id +"'}"而不是一个对象。

答案 2 :(得分:0)

您的服务器是否有“json”?例如,godaddy不提供它