私は2つの投稿値でajaxリクエストを送信しています。最初はPHPスクリプトが解析するアクションを定義する「アクション」、もう一方はスクリプトを解析するユーザーのIDである「ID」です。
サーバーはarray()内で6つの値を返し、PHP function:json_encode();
でJSONにエンコードされます
応答の一部はHTMLですが、JSONにエンコードすると、"/"
だから"\/"
無効にするにはどうすればよいですか?
[。 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を機能させるにはどうすればよいですか?
を呼び出す必要があります
_$.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);
} ...
_
http://api.jquery.com/jQuery.parseJSON/ でこれを参照してください
それでもスラッシュの問題がある場合: security.magicquotes.disabling.php または: function.stripslashes.php を検索してください
注:
ここでの回答は、dataType
プロパティをjson
に設定して_$.ajax
_を使用しようとして、それでも間違った応答タイプを取得しようとした人向けです。サーバーでheader('Content-type: application/json');
を定義すると問題が修正される場合がありますが、_text/html
_またはその他の型を返す場合は、_$.ajax
_メソッドでjson
に変換する必要があります。古いバージョンのjQueryでテストを行い、バージョン_1.4.4
_の後にのみ_$.ajax
_を強制して、渡されたdataType
にコンテンツタイプを変換します。したがって、この問題がある場合は、jQueryバージョンを更新してください。
まず、JSONを提供するためにPHPのヘッダーを設定すると役立ちます。
header('Content-type: application/json');
次に、ajax呼び出しを調整するのに役立ちます。
$.ajax({
url: "main.php",
type: "POST",
dataType: "json",
data: {"action": "loadall", "id": id},
success: function(data){
console.log(data);
},
error: function(error){
console.log("Error:");
console.log(error);
}
});
成功した場合、受信した応答は真のJSONとして取得され、オブジェクトがコンソールに記録される必要があります。
注:純粋なhtmlを取得する場合は、JSONに別の方法を使用することを検討することもできますが、個人的にJSONを使用し、テンプレート( Handlebars js など)を使用してhtmlにレンダリングすることをお勧めします。
バインドされたデータでオペコードの送受信を使用して、javascriptクライアントサイドコントローラーとphpサーバーサイドコントローラーを接続します。したがって、あなたのPHPコードは、js recepient/listenerの応答関数デルタとして送信できます
https://github.com/ArtNazarov/LazyJs を参照してください
悪い英語でごめんなさい
文字列としてマークアップを作成しているため、jsonに変換する必要はありません。 implode
メソッドを使用して、すべての配列要素を組み合わせて送信するだけです。これを試して。
PHPの変更
$response = array();
$response[] = "<a href=''>link</a>";
$response[] = 1;
echo implode("", $response);//<-----Combine array items into single string
JS(dataTypeをjsonからhtmlに変更するか、設定しないでjQueryが判断します)
$.ajax({
type: "POST",
dataType: "html",
url: "main.php",
data: "action=loadall&id=" + id,
success: function(response){
$('#main').html(response);
}
});