0

次の ajax 呼び出しがあります。私がやりたいことは、ajax リクエスト中に変数「lan_setting」を設定し、成功時にその変数を使用できるようにすることです。

実際には、その変数を投稿データに設定したいのですが、これはフォームの入力によって異なりますが、今のところ、この基本的な例だけでは機能しません。「未定義」を返すだけです。

_jqXHR = $.ajax({
    url: url,
    data: {lan_setting: 'en'},
    scriptCharset: "UTF-8",
    contentType: "application/x-www-form-urlencoded;charset=UTF-8",
    success: function(lan_setting, data, textStatus, jqXHR) {
        alert(data.lan_setting);    
    }
});

成功時にajax経由で送信された投稿変数を使用するにはどうすればよいですか?

ありがとう!

4

3 に答える 3

1

投稿する場合は、ここで jquery 投稿機能を使用する必要があります。

$.post(
    url,
    {lan_setting:"en"},
    function( data, status, jqXhr ){
        alert(data.lan_setting);
    },
    "json"
);

次にphp:

<?php
    // do stuff

    $response = new stdClass;
    $response->lan_setting = $_POST["lan_setting"];
    print json_encode($response);
?>
于 2012-09-26T00:09:48.363 に答える
1

さて、success関数を間違って宣言しています ( jQuery .ajax() のドキュメントから):

成功(データ、テキストステータス、jqXHR)

言い換えると、success関数はdatatextStatusjqXHRおよび他には何も取得しません。POST 変数を取得することはできません。取得したものだけを取得します。configまた、オブジェクトで指定するだけでは POST 変数を渡すことはできませんdata。プロパティを介して渡す必要があります。最後に、.ajax()デフォルトで GET リクエストが使用されるため、POST リクエストを使用することを明示的に指定する必要があります。

あなたが何をしたいのか少し混乱しています。AJAX 呼び出しを行う前にの値を知っている場合lan_setting、なぜそれをsuccess関数に渡す必要があるのでしょうか? それを使用してください:

var lan_setting = 'en';
_jqXHR = $.ajax({
    url: url,
    type: "POST",
    data: {
        lan_setting: lan_setting
    },
    scriptCharset: "UTF-8",
    contentType: "application/x-www-form-urlencoded;charset=UTF-8",
    success: function(lan_setting, data, textStatus, jqXHR) {
        alert(lan_setting); 
    }
});

一方、lan_setting値を渡し、サーバーによって変更され、返される場合は、おそらく JSON を使用して、何らかの方法で応答にエンコードする必要があります。

于 2012-09-26T00:11:34.557 に答える
0

jQuery.ajax の success() メソッドは、3 つのパラメーターを受け入れます。最初のパラメーターは、要求からの応答です。

success(data, textStatus, jqXHR)Function, Array リクエストが成功した場合に呼び出される関数。この関数には 3 つの引数が渡されます。dataType パラメータに従ってフォーマットされた、サーバーから返されたデータ。ステータスを説明する文字列。そしてjqXHR

また、$.ajax を使用する場合は、一定数のオブジェクトを渡すことができます。http://api.jquery.com/jQuery.ajax/を参照してください。

あなたの投稿に関する限り、あなたはできる...

$.post("service.php", {lan_setting: "en"}, function(response) { alert(response); }

これにより、2 番目のパラメーター{lan_setting: "en"}がその php サービスにポストされ、その応答がエコーされます。

于 2012-09-26T00:10:14.783 に答える