首页 文章

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

提问于
浏览
1

我有一个.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”as我期待 .

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


运行fiddler并关闭自定义错误后,我收到以下错误:

{“Message”:“Thread is aborted . ”,“StackTrace”:“at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo方法,Object target,Object []参数,SignatureStruct&sig,MethodAttributes methodAttributes,RuntimeType typeOwner)\ r \ n at System.ReuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo方法,Object target,Object []参数,Signature sig,MethodAttributes methodAttributes,RuntimeType typeOwner)\ r \ n在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化,布尔skipVisibilityChecks)\ r \ n在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化)\ r \ n在System.Web.Script中System.Web.Script上的System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target,IDictionary2参数)\ r \ n中的.Services.WebServiceMethodData.CallMethod(Object target,IDictionary2 parameters)\ r \ n . 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

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

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

    对我来说,似乎没有向您的方法发布正确的参数 .

    我从来没有像以前那样使用.ajax方法中的数据选项 . 我用:

    data: {Id: myId},
    

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

    \ r \ n通常与编码字符串相关,这里不应该与此相关,而且看起来你传递的是字符串数据:“{'Id':'”Id“'}”而不是宾语 .

  • 1

    你的服务器有“json”吗?例如,godaddy不提供它

相关问题