web-dev-qa-db-ja.com

Jqueryでphp文字列を解析しています

シリアル化を使用してphp配列を送信していますが、応答が異なります。これが私の試みです

$array = serialize($out);
var_dump(serialize($array));
//string(58) "s:50:"a:2:{s:9:"sidebar-1";i:5;s:12:"footer-insta";i:2;}";"

この値を送信する方法は

echo '<div data-ad = '.$array.' class="ash_loadmore"><span>LOAD MORE</span></div>';

Ajaxを使ってシリアライズされた値を送信しているので、ajaxの応答から得られる値

string(54) "a:2:{s:9:\"sidebar-1\";i:5;s:12:\"footer-insta\";i:2;}"

それを配列にするには、再度シリアル化しないので、正確な値が必要です。追加の\があり、出力が異なるのはなぜですか。

1
Sadia Mehjabin

@JacobPeattieがjsonを使用していると言っているようです。

  1. 最初のjsonは変数$array = json_encode($out);をエンコードします

  2. それからこの値を送ってくださいecho '<div data-ad = '.$array.' class="ash_loadmore"><span>LOAD MORE</span></div>';

  3. それを得るためにはecho json_encode($_POST['ad'])

出力はこの{"footer-insta":2,"sidebar-1":3}のようになりますので{}で囲まれているので、文字列の問題は発生していません。

2
ashraf

さて、この\"をエスケープするために追加されています。たとえば、文字列全体"sidebar-1"を格納しているとします。この文字列には、開始"と終了"が含まれています。これで、文字列は別の""でラップされるようになりました。そのため、格納された文字列の開始"と終了"を分離するために、エスケープするために\を追加します。このようにして、隠された形式で、格納された文字列の""を実際の引用符として解析します。

0
CodeMascot

最も単純で最も問題の少ない解決策:

$array = json_encode($out);
var_dump(array); // string "{\"sidebar-1\":5,\"footer-insta\":2}"

JSではあなたが使用することができます:

 JSON.parse( "{\" sidebar-1\":5、\" footer-insta\":2}")

そしてあなたはデータを持ったオブジェクトを持っています

0