getJSONを使用してpostメソッドでデータを送信するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/751218

質問

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

例えば Students/getstud/1 ここでは、コントローラー/アクション/パラメーターの形式が適用されます。

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

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

同様の方法でもよい。

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

役に立ちましたか?

解決

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

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

その電話の中で、 dataToBeSent 任意の内容を指定できますが、HTML フォームのコンテンツを送信する場合は、 シリアライズ フォームから POST 用のデータを作成するメソッド。

var dataToBeSent = $("form").serialize();

他のヒント

これが私の「1行」のソリューションです。

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

JSONPを使用するため、およびPOSTメソッドでは、この機能は、URLに「コールバック」GETパラメータを追加します。これは、それを使用する方法です。

$.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).");");

私はいくつかのクロスドメインのテストを行い、動作しているようです。それでもかかわらず、より多くのテストを必要としています。

ちょうどあなたの<script>にこれらの行を追加します(jQueryのがロードされているどこかの後で何かを投稿する前に):

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

$.getJSON付き(一部/すべて)$.postJSONを交換し、お楽しみください!

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

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

私がgetJSONをしていたコードを持っていました。私は単にポストでそれを置き換えます。驚いたことに、それは

働いていました
   $.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
    } 

私はポストとANを使用した場合:

data = getDataObjectByForm(form);
var jqxhr = $.post(url, data, function(){}, 'json')
    .done(function (response) {
        if (response instanceof Object)
            var json = response;
        else
            var json = $.parseJSON(response);
        // console.log(response);
        // console.log(json);
        jsonToDom(json);
        if (json.reload != undefined && json.reload)
            location.reload();
        $("body").delay(1000).css("cursor", "default");
    })
    .fail(function (jqxhr, textStatus, error) {
        var err = textStatus + ", " + error;
        console.log("Request Failed: " + err);
        alert("Fehler!");
    });

$.getJSON()は応答としてAJAX要求を送信し、JSONデータを取り戻すためにはかなり便利です。残念ながら、jQueryのドキュメントは$.postJSON()名前を付ける必要があり姉妹機能を欠いています。理由だけではなく、$.getJSON()を使用して、それを行うことはありませんか?まあ、おそらくあなたは、大量のデータを送信したいか、私の場合には、IE7はちょうどGETリクエストで正しく動作する必要はありません。

これは、そこには$.postJSON()方法は現在ありませんが、あなたは$.post()機能で四番目のパラメータ(タイプ)を指定することで、同じことを達成することができ、真であります

私のコードは次のように見えました

$.post('script.php', data, function(response) {
  // Do something with the request
}, 'json');

あなただけの2つのパラメータを持っている場合は、あなたがこれを行うことができます:

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

    //do something useful with returned result//
    result.variable-in-result;
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top