我有一个.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 回答
您的JSON无效;你需要使用双引号:
对我来说,似乎没有向您的方法发布正确的参数 .
我从来没有像以前那样使用.ajax方法中的数据选项 . 我用:
其中myId是保存您要传递的Id值的变量 - 没有任何引号 .
\ r \ n通常与编码字符串相关,这里不应该与此相关,而且看起来你传递的是字符串数据:“{'Id':'”Id“'}”而不是宾语 .
你的服务器有“json”吗?例如,godaddy不提供它