117

上記の方法を使用していますが、URL の 1 つのパラメーターでうまく機能します。

たとえばStudents/getstud/1、コントローラー/アクション/パラメーター形式が適用される場所。

これで、Students コントローラーに 2 つのパラメーターを受け取り、JSON オブジェクトを返すアクションができました。

$.getJSON()では、 post メソッドを使用してデータを投稿するにはどうすればよいですか?

同様の方法も許容されます。

コントローラーのアクションをAJAXで呼び出すのがポイントです。

4

7 に答える 7

227

$ .getJSON()メソッドは、POSTではなくHTTPGETを実行します。$ .post()を使用する必要があります

$.post(url, dataToBeSent, function(data, textStatus) {
  //data contains the JSON object
  //textStatus contains the status: success, error, etc
}, "json");

その呼び出しでdataToBeSentは、何でもかまいませんが、htmlフォームのコンテンツを送信する場合は、serializeメソッドを使用して、フォームからPOSTのデータを作成できます。

var dataToBeSent = $("form").serialize();
于 2009-04-15T11:59:16.243 に答える
12

これは私の「一行」ソリューションです:

$.postJSON = function(url, data, func) { $.post(url+(url.indexOf("?") == -1 ? "?" : "&")+"callback=?", data, func, "json"); }

jsonp と POST メソッドを使用するために、この関数は「callback」GET パラメータを URL に追加します。これはそれを使用する方法です:

$.postJSON("http://example.com/json.php",{ id : 287 }, function (data) {
   console.log(data.name);
});

サーバーは、コールバック GET パラメーターを処理し、json 文字列を次のように返すように準備する必要があります。

jsonp000000 ({"name":"John", "age": 25});

ここで、「jsonp000000」はコールバック GET 値です。

PHP では、実装は次のようになります。

print_r($_GET['callback']."(".json_encode($myarr).");");

いくつかのクロスドメイン テストを行ったところ、うまくいくようです。ただし、さらにテストが必要です。

于 2010-09-29T03:49:16.650 に答える
7

これらの行をあなたに追加するだけ<script>です(jQueryがロードされた後、何かを投稿する前のどこかに):

$.postJSON = function(url, data, func)
{
    $.post(url, data, func, 'json');
}

$.getJSON(一部/全部)を置き換え$.postJSONて楽しんでください!

と同じ Javascript コールバック関数を使用できます$.getJSON。サーバー側の変更は必要ありません。(まあ、私は常に$_REQUESTPHPでの使用をお勧めします.http ://php.net/manual/en/reserved.variables.request.php、$_REQUEST、$_GET、$_POSTうち、どれが最速ですか?

これは@lepeのソリューションよりも簡単です。

于 2015-03-15T18:08:12.540 に答える
3

I had code that was doing getJSON. I simply replaced it with post. To my surprise, it worked

   $.post("@Url.Action("Command")", { id: id, xml: xml })
      .done(function (response) {
           // stuff
        })
        .fail(function (jqxhr, textStatus, error) {
           // stuff
        });



    [HttpPost]
    public JsonResult Command(int id, string xml)
    {
          // stuff
    } 
于 2013-09-27T14:38:06.683 に答える
-8

パラメータが2つしかない場合は、次のように実行できます。

$.getJSON('/url-you-are-posting-to',data,function(result){

    //do something useful with returned result//
    result.variable-in-result;
});
于 2010-07-20T18:35:15.990 に答える