2011-06-17 1 views
0

このコードはmvc2では正常に機能しましたが、Sharepoint 2010のため従来のASPXに戻っています。私は間違いに遭遇しています。誰が私にこのフレームワークのために間違っていることを教えてもらえますか?aspxとjquery.ajaxは常にエラーを返しています

このAJAX呼び出しは、私は、エラー毎回取得

[WebMethod] 
public static string DoesNameUrlExist(string siteName, string siteUrl) 
{ 
    //do something 
    return someString; 
} 

背後$ .ready

$.ajax({ 
     type: "POST", 
     dataType: "json", 
     data: 'siteName=a&siteUrl=b', 
     url: 'Wizard.aspx/DoesNameUrlExist', 
     beforeSend: function() { alert("before send"); }, 
     complete: function() { alert("complete"); }, 
     success: function (data) { alert("success"); }, 
     error: function (data) { 
      if ($("meta[name=debug]").attr("content") == "true") { 
       //Full Error when debugging 
       var errDoc = window.open(); 
       errDoc.document.write(data.responseText); 
       errDoc.document.close(); 
      } 
      else { 
       // generic error message for production use 
       alert("An unexpected error occurred."); 
      } return false; 
     } 
    }); 

コードです。

+0

エラーメッセージは何ですか。 –

答えて

1

あなたは「サービスにJSONを送信する必要があり、あなたのことを示していますここ

$.ajax({ 
    type: "POST", 
    contentType: 'application/json', 
    data: '{"siteName":"a","siteUrl":"b"}', 
    url: 'Wizard.aspx/DoesNameUrlExist', 
    beforeSend: function() { alert("before send"); }, 
    complete: function() { alert("complete"); }, 
    success: function (data) { alert("success"); }, 
    error: function (data) { 
     if ($("meta[name=debug]").attr("content") == "true") { 
      //Full Error when debugging 
      var errDoc = window.open(); 
      errDoc.document.write(data.responseText); 
      errDoc.document.close(); 
     } 
     else { 
      // generic error message for production use 
      alert("An unexpected error occurred."); 
     } return false; 
    } 
}); 

詳細情報:http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

ヘッダを経由してそうする再

また、jQuery 1.4を使用している場合は、dataTypeを削除できます。 jQuery will infer JSON automatically based on the response's Content-Type header

0

contentTypeをjsonと宣言し、レスポンスのコンテンツタイプがjson以外の場合、jQueryのAjaxコールでは常にエラーが表示されます。あなたのWebMethodからの応答が何か異なる場合(HTMLやテキストなど)、あなたはいつもそのエラーを受け取ります。あなたはこのようなあなたの方法にその応答タイプを設定することができます。

[WebMethod] 
[ScriptMethod (UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] 
public static string DoesNameUrlExist(string siteName, string siteUrl) 

WebMethodの社外これはまた、このように達成することができます。

Response.ContentType = "application/json"; 
+0

彼はページメソッドを呼び出しているので、入力パラメータとしてJSONが必要であり、レスポンスに 'application/json' Content-Typeも自動的に設定されます。それを手動で行う必要はありません。 –

+0

私はあなたがそれを指定した場合、入力として期待されるのはjsonだと思っています。 [リンク](http://api.jquery.com/jQuery.ajax/)。以前はpageMethodsを使用していましたが、jsonで渡されていません – Anthony

+1

パラメータがない場合は、静的な「ページメソッド」とASMX「ScriptServices」でJSON入力パラメータを使用する必要があります。過去に、ScriptManagerを使用してPageMethod.YourMethodName()構文を使用してページメソッドを呼び出すことに気付いていないかもしれません。この場合、MicrosoftAjax.jsは自動的にクライアント側のJSONシリアル化を処理します。 –

関連する問題