jquery $ .post-サーバーからクライアントへ - 取得するための応答はどのように知っていますか?
質問
だから私たちはこれを持っています:
$.post('testeUpdate.php', 'someValue'
function(dadosResposta) {
$('#ns-nome').val(dadosResposta.nsName);
$('#ns-endereco').val(dadosResposta.nsAddress);
},
"json");
クライアントからサーバーへ:POSTを使用して「SameValue」をtesteupdate.phpに送信します。
成功すると、サーバー側のスクリプトによって返されるデータを受信し、クライアント側でそれを使用します。正しい?
サーバーサイドスクリプトと、私が取得していないこのクライアント側のスクリプトの間に何かがあります。
質問:Dadosrespostaは、サーバーサイドスクリプトから返されたデータでどのように満たされますか?それはどのように知っていますか?どのように機能しますか?おそらく、質問が提起されるかもしれません:Jqueryは、何かが「成功している」ことをどのように知っていますか?
または別の方法で試してください:サーバー側がスクリプトを実行し、JSONでエンコードされたデータを返します。ここまで大丈夫です。この後、何が起こりますか?クライアント側の部分に再びジャンプするにはどうすればよいですか?
更新]再試行:私はそれを知っています: DadosRespostaには、サーバー側のスクリプトが返すものは何でも含まれています 私の質問は、 どうやって それについて知っていますか?彼はどうやってそれをしますか? [/アップデート
どうもありがとう、mem
解決
jquery .post
関数は、xmlhttprequestオブジェクトを使用して、渡したURLにアクセスします。サーバーは、いずれかで応答します 200 OK
(成功)またはその他の応答(おそらく失敗)。
成功すると、xmlhttprequestオブジェクトにはそのものがあります responseText
(また responseXML
)サーバーによって返されるデータに設定されたプロパティ。応答を処理する舞台裏のjQuery関数はあなたを見ます dataType
返されたデータをどうするかを決定する議論。例の場合、それをオブジェクトに解析しようとします。
応答が有効なJSON文字列であると仮定すると、その後、新しく作成されたオブジェクトがコールバック関数に最初の(および唯一の)引数として渡されます。 dadosResposta
.
それか jQueryがデータを取得する方法です dadosResposta
.
編集:これは、おそらく何が起こっているのかに漠然と似ているコードです。
$.post = function([arguments])
{
var xhr = new XMLHttpRequest(); // not cross browser compatible, but good enough for demonstration
xhr.onreadystatechange = function()
{
if (xhr.readyState === 4 && xhr.status === 200)
{
switch (your_dataType) // check your data type
{
case 'json':
your_callback(json_decode(xhr.responseText)); // call your function with JSON object
break;
case 'xml':
your_callback(xhr.responseXML); // call your function with XML
case ... (etc)
}
}
}
xhr.open('POST', your_URL, true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send();
}
他のヒント
コールバック関数のパラメーター(dadosResposta
この場合、サーバー側のスクリプトが返すものは何でも含まれます。たとえば、サーバー側のスクリプトが単純なテキストで「完了」という単語を返しているだけの場合、 dadosResposta
文字列になります "completed"
.
この特定のケースでは、データはJSONであり、特定のフィールドにのようにアクセスできるように、データをより適切に編成できるようにします。 dadosResposta.nsName
.
jQueryは、リクエストが200のHTTPステータスコードを返すと、コールが成功したことを知っています。サーバーが要求の処理に失敗した場合、エラーコード(IE 500)を返す必要があります。
$.post
コールバック関数を取得します。そのコールバックは、サーバーから返されたデータである1つの引数を取ります。だから、あなたの場合、 dadosResposta
データはサーバーから返されます。
HTTPヘッダーのステータスコードが返されたために成功したかどうかはわかっています(200 OK
この場合)。ステータスを含むコールバックに2番目の引数を含めることができます。
編集: それがjQueryの仕組みだから知っています。 jQueryは応答を取得し、コールバックのパラメーターとして渡します。内部についてもっと知りたい場合は、 xmlhttprequest.