2 つの POST 値を持つ Ajax リクエストを送信しています。1 つ目は、PHP スクリプトが解析する必要があるアクションを定義する「action」で、もう 1 つは、スクリプトを解析する必要があるユーザーの ID である「id」です。
サーバーは array() 内に 6 つの値を返し、PHP 関数を使用して JSON にエンコードします。json_encode();
私の応答の一部は HTML ですが、JSON にエンコードするとエスケープされて次"/"
のようになります。"\/"
これを無効にするにはどうすればよいですか?
また、サーバー応答を受け取ったときにこれを jQuery で表示する方法がわからないため、すべてを div に入れると、要求した数値と HTML コードが表示されるだけだと考えましたが、配列は PHP でエンコードされたとおりに表示されます。
PHP の
$response = array();
$response[] = "<a href=''>link</a>";
$response[] = 1;
echo json_encode($response);
jQuery:
$.ajax({
type: "POST",
dataType: "json",
url: "main.php",
data: "action=loadall&id=" + id,
complete: function(data) {
$('#main').html(data.responseText);
}
});
これを機能する JSON にするにはどうすればよいでしょうか?
ベストアンサー1
電話する必要があります
$.parseJSON();
例えば:
...
success: function(data){
var json = $.parseJSON(data); // create an object with the key of the array
alert(json.html); // where html is the key of array that you want, $response['html'] = "<a>something..</a>";
},
error: function(data){
var json = $.parseJSON(data);
alert(json.error);
} ...
これを参照してください参考:
それでもスラッシュの問題がある場合は、セキュリティ.magicquotes.disabling.phpまたは:関数.stripslashes.php
注記:
$.ajax
ここでの回答は、 プロパティを にdataType
設定してを使用しようとしたjson
が、それでも間違った応答タイプが返される人向けです。 サーバーで を定義すると問題が解決する可能性がありますが、またはその他のタイプheader('Content-type: application/json');
を返す場合、メソッドは に変換する必要があります。 jQuery の古いバージョンでテストを行い、バージョン が渡されたにすべてのコンテンツ タイプを強制的に変換した後でのみテストを行いました。 そのため、この問題が発生した場合は、jQuery のバージョンを更新してみてください。text/html
$.ajax
json
1.4.4
$.ajax
dataType