2012-02-27 14 views
2

私は、ページ上のメソッドを呼び出して(ロジックを行い、WCFサービスを呼び出してオブジェクトを返します)、次のような.Ajaxメソッドがあります。.Ajaxメソッドはローカルマシンでは動作しますが、サーバ上では動作しません

$.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()を呼び出す際にエラーが発生していると判断しました。

ライブサーバー上のuriで面白い何かをしている場合に備えて、私がページのパスを表示するために.ajaxメソッドの前にアラートを表示し、 "/ MyPage私が期待するように.aspx "。

また、「url:」を完全なuriに変更して、それが役に立たなかったかどうかを確認しました。カスタムエラーをオフにした状態でシオマネキを実行した後


、私は次のエラーを取得する:

{"Message":"Thread was being aborted.","StackTrace":" at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)\r\n at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)\r\n at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)\r\n at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary 2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary 2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.Threading.ThreadAbortException"}

+0

URLは 'MyPage.aspx/TestMethod'の代わりに' MyPage.asmx/TestMethod'でしょうか? –

+0

サーバーで失敗したときに、Ajaxリクエストからどのような応答が得られますか?それは200、404、500、何か他のものを返していますか? – kendaleiv

+0

@ JohnPickいいえ、呼び出しは、asmx Webサービスではなく、aspx Webページの背後にあるメソッドへの呼び出しです。 – Ben

答えて

0

私には、それはあなたの方法に正しいパラメータを掲示されていないようにそれはそう。

ここでは以前と同じように.ajaxメソッドでデータオプションを使用したことはありません。私は以下を使用します:

data: {Id: myId}, 

ここで、myIdは、引用符なしで渡すIDの値を保持する変数です。

\ r \ nは通常、ここで関連するものではないエンコード文字列と関係しています。文字列データを渡しているようです: "{'Id': '" + Id + " '}'をオブジェクトの代わりに使用します。

1

JSONが無効です。

+0

あなたのローカルマシンで何を持っているのかわかりません。それは混乱している。 – JayC

0

サーバーに "json"がありますか?例えば、godaddyはそれを提供しません

+0

あなたはあなたの答えを得ましたか? – Andrew

関連する問題