シリアル化を使用して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;}"
それを配列にするには、再度シリアル化しないので、正確な値が必要です。追加の\
があり、出力が異なるのはなぜですか。
@JacobPeattieがjsonを使用していると言っているようです。
最初のjsonは変数$array = json_encode($out);
をエンコードします
それからこの値を送ってくださいecho '<div data-ad = '.$array.' class="ash_loadmore"><span>LOAD MORE</span></div>';
それを得るためにはecho json_encode($_POST['ad'])
出力はこの{"footer-insta":2,"sidebar-1":3}
のようになりますので{}
で囲まれているので、文字列の問題は発生していません。
さて、この\
は"
をエスケープするために追加されています。たとえば、文字列全体"sidebar-1"
を格納しているとします。この文字列には、開始"
と終了"
が含まれています。これで、文字列は別の""
でラップされるようになりました。そのため、格納された文字列の開始"
と終了"
を分離するために、エスケープするために\
を追加します。このようにして、隠された形式で、格納された文字列の""
を実際の引用符として解析します。
最も単純で最も問題の少ない解決策:
$array = json_encode($out);
var_dump(array); // string "{\"sidebar-1\":5,\"footer-insta\":2}"
JSではあなたが使用することができます:
JSON.parse( "{\" sidebar-1\":5、\" footer-insta\":2}")
そしてあなたはデータを持ったオブジェクトを持っています