Ajax方法在本地机器上工作,但在服务器上不工作

本文关键字:工作 服务器 机器 方法 Ajax | 更新日期: 2023-09-27 18:25:49

我有一个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);
        }

这在我的本地机器上运行得很好,但在我部署到服务器时无法运行。

我已经确定没有调用page-behind方法(即错误在于调用TestMethod(),而不是调用服务的TestMethod.)。

我还在.ajax方法之前设置了一个警报,向我显示我所在页面的路径,以防它在实时服务器上对uri进行了一些有趣的操作,结果如我所料,返回为"/MyPage.aspx"。

我还将"url:"更改为完整的uri,看看这是否有帮助,但没有。


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

{"Message":"线程被中止。","StackTrace":"位于System.RuntimeMethodHandle_InvokeMethodFast(IRuntimeMethodInfo方法,Object目标,Object[]参数,SignatureStruct&sig,MethodAttributes MethodAttributes,RuntimeType typeOwner)''r''n位于System.RuntimeMethodHandle.IInvokeMethodFast(IRuntimeMethodInfo方法,Object target,Object[]arguments,Signature sig,MethodAttributesmethodAttributes,RuntimeType typeOwner)''r''n位于System.Reflection.RuntimeMethodInfo.IInvoke(Object obj,BindingFlagsinvokeAttr,Binder绑定器,Object[]参数,CultureInfo区域性,布尔skipVisibilityChecks)''r''nSystem.Reflection.RuntimeMethodInfo.IInvoke(Object obj,BindingFlagsinvokeAttr,Binder绑定器,Object[]参数,CultureInfo区域性)''r''nSystem.Web.Script.Services.WebServiceMethodData.CallMethod(对象目标,IDictionary 2 parameters)'r'n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary 2个参数)''r''nSystem.Web.Script.Services.RestHandler.InvokeMethod(HttpContext上下文,WebServiceMethodData methodData,IDictionary `2 rawParams)''r''n在System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext上下文,WebServiceMethodDatamethodData)","ExceptionType":"System.Threading.ThreadException"}

Ajax方法在本地机器上工作,但在服务器上不工作

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

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

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

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

data: {Id: myId},

其中myId是包含要传递的Id值的变量,不带任何引号。

''r''n通常是与编码字符串有关的东西,而这在这里不应该是相关的东西,并且似乎您传递的是字符串数据:"{'Id':'"+Id+"'}"而不是对象。

您的服务器有"json"吗?例如,godaddy不提供