2013-11-25 11 views
5

私は、サーバからJSONを取得するjQueryのコードを持っている:jQuery.getJSONコールASP.NET方法

$(document).ready(function() { 
      $.getJSON('Default2.aspx/GetPerson', { 'firstname': 'brian', 'lastname': 'lee' }, function (response) { 
       alert(response.Age); 
      });  
     }); 

Default2.aspxコード:

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public static String GetPerson(String firstname, String lastname) 
    { 
     Person p = new Person(firstname, lastname); 
     return "{\"Age\":\"12\"}"; 
    } 

質問です:

なぜGetPersonメソッドはスクリプトから呼び出されませんか?私はGetPersonにデバッガを付けますが、呼び出されていないようです。

助けていただければ幸いです!

+0

私はそれが理由であれば、あなたがデータとしてプロパティ名を与えることができることを確認していません。データ:{'ファーストネーム': 'ブライアン'、 'ラストネーム': 'リー'} –

+0

いいえ、それは動作しません –

+0

http://stackoverflow.com/questions/16910982/calling-webmethod-returning-ilistt-from- jquery-ajax-with-nhibernate-and-mvc。私はあなたがこの投稿ごとにwebmethod.asを取り除く必要があると思う、webmethodsは廃止されました –

答えて

5

WebMethodは、デフォルトでGETリクエストではなくPOSTに応答します。

$.ajax({ 
    type: 'POST', 
    url: 'Default2.aspx/GetPerson', 
    dataType: 'json', 
    // ... 
}); 

そして、要求フォーマットはResponseFormatと一致するだけでなくJSONすべきである:

あるいは
// ... 
    data: JSON.stringify({ 'firstname': 'brian', 'lastname': 'lee' }), 
    contentType: 'application/json' 

ScriptMethod代わりGETを使用するように構成することができる。

[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)] 

まだ、contentTypeを設定する必要があります、そう$.getJSON()を使用することはできません。

$.ajax({ 
    type: 'GET', 
    url: 'Default2.aspx/GetPerson', 
    dataType: 'json', 
    contentType: 'application/json', 
    // ... 
}); 

そして、dataはURLエンコードされますが、それぞれの値が、その前に、JSONエンコードする必要があります:

// ... 
    data: { 
     firstname: JSON.stringify('brian'), 
     lastname: JSON.stringify('lee') 
    } 

も注意してくださいScriptMethod{ "d": ... }オブジェクトで応答をラップします。 return値がStringあるので、"d"の値は、同じ解析対象外Stringこと:

// ... 
    success: function (response) { 
     response = JSON.parse(response.d); 
     alert(response.Age); 
    } 
+0

あなたは 'デフォルトでWebMethodsはGETリクエストではなくPOSTに応答しました。 。では、WebMethodをGETに対応させる方法を教えてください。 –

+0

@IswantoSanいくつかの注意点がありますが、可能です。私の編集を参照してください。 –

+0

ありがとうございました! –

関連する問題