jquery $ .post -w/ codeサンプルを理解するのに役立ちます
質問
$.post('testeUpdate.php', 'autocomplete',
function(dadosResposta) {
$('#ns-nome').val(dadosResposta.nsName);
$('#ns-endereco').val(dadosResposta.nsAddress);
},
"json");
私はこれを理解しようとしています。だから、そして私の近くにjQuery $ .POSTリファレンスリンクを持っている:
1) POSTリクエストはtesteupdate.phpに送信されます。その後、「autocomplete」と呼ばれる文字列を渡すことができます。正確?
質問1) その文字列でPOSTリクエストを渡すことは、特に次のように指すことにより、条件付きの要求を後で処理できることを意味します。 ?
2)その後、パラメーターを受け入れる「成功」コールバック関数、DadosRepostaがあります。正確?
質問2)このDadosRespostaは、サーバー側のスクリプトから来るかもしれないものですか?これは私たちが受け取ったデータを持っている引数ですか?
3) したがって、成功すると、私たちがやりたいことは、いくつかの入力要素をいくつかの値に入力することです。 val(dadosresposta.nsname);
質問3)この「ドット表記」は、JSON形式でデータにアクセスする方法ですか?それとも、通常のようにDOMを歩く方法ですか?それでは、JSONはここでどのような役割を果たしていますか?
よろしくお願いします、mem
解決
1) はい、この方法でPHPを使用してAutoCompleteにアクセスできます。 ($ _POST ['AutoComplete'])。しかし、Isset()でTrueを表示するという事実以外に、データはありません。
2) はい、Dadosrespostaは、サーバーから戻ってくる応答です。 $ .POSTリクエストでJSONとして最後のパラメーターを設定した場合、JavaScriptでJSONオブジェクトとしてネイティブに使用できます。この方法でデータを表示するには、PHPで使用できます json_encode()
3) データが入ったら、好きなように行うことができます。しかし、JSONが適切にフォーマットされている場合にのみ、DOT表記は機能します。参照: json.org
4) DOT表記は、JSON形式で返されるデータにアクセスする方法であり、DOMとは何の関係もありません。 $ .POSTの最後の部分を「テキスト」に変更すると、サーバーから返されるデータを通常の文字列として動作させることができます。
他のヒント
- はい、これは正しいです、それは唯一の投稿変数です、例えばあなたがチェックしている
isset($_POST['autocomplete'])
, 、自動コンプリートは通常、既に入力したものに依存しているため、ここでテキストボックスの値を実際に渡したいと思うようです。 - はい、この関数は応答が戻ってきたときに実行されます。引数は、PHPページから戻ってくるデータが戻ってきます。
- 応答は次のように見えるはずです:
{ nsName: 'name', nsAddress: 'address' }
これらの値を使用してこれらの2つのフィールドを入力しているため、ドット表記は値を取得しています 応答から, 、JSONはこれをもっときれいにしているだけです:)
私はあなたのコードをオンにしました jsfiddle あなたが見ることができるように、あなたが持っているものに基づいて構築しようとしました。私はJSFiddleのJSONエコー関数にデータを送信しました。
echo json_encode(array("post_response"=>$_POST));
ご覧のとおり、私はあなたが要求していた応答に合わせてポストデータを変更しました。サーバー側では、通常のシナリオでは通常このようになります。
if(isset($_POST['somedata']))
{
//do stuff... you know, whatever
echo json_encode(array("nsName" => $someString1,"nsAddress" => $someString2));
}