簡體   English   中英

JSON編碼的數組在PHP中為null

[英]JSON encoded array comes out as null in PHP

我正在使用jQuery UI的Sortable功能制作一個小的拖放應用程序。 jQuery可以正常工作,但是當我嘗試按順序對所有行的數組進行編碼時,另一側的PHP腳本會將數組讀取為NULL ,但我不知道為什么。 以下是它們在我的第一個腳本中顯示的順序:

HTML

<form method="post" id="reorder" action="orderupdate.php">
    <input type="hidden" id="post_ids" name="post_ids">
    <button type="submit">REORDER</button>
</form>

<ul id="photo-selector">
    <li id="img1"><img src="images/img1.jpg"></li>
    <li id="img2"><img src="images/img2.jpg"></li>
    <li id="img3"><img src="images/img3.jpg"></li>
    <li id="img4"><img src="images/img4.jpg"></li>
    <li id="img5"><img src="images/img5.jpg"></li>
    <li id="img6"><img src="images/img6.jpg"></li>
</ul>

JS

$(document).ready( function(){

    var formOrder = document.getElementById('reorder');
    formOrder.addEventListener('submit', function(){
        var post_ids_field= document.getElementById('post_ids');
        var ul_id = document.getElementById("photo-selector");
        var post_ids = ul_id.getElementsByTagName("li");
        post_ids_field.value = JSON.stringify(post_ids);
        alert("check");
    });

});

單擊頂部表單中的“ REORDER”按鈕時,它將發送到orderupdate.php ,如下所示

<?php

    $post_ids = json_decode($_POST['post_ids']);
    var_dump($post_ids);

    require("opendbas3.php");

    foreach ($post_ids as $x => $value) {
        $query = "UPDATE dav_posts SET p_order='$x' WHERE post_id='$value'";
        $result = mysql_query($query, $link);
    }

?>

現在,當我提交時,它將我重定向到PHP腳本orderupdate.php它不執行查詢,並且我發現foreach循環無法讀取$post_ids數組。 我的var_dump()只得到NULL 此外,JS腳本中的alert不會在ready()函數或事件偵聽器的提交上觸發。 它只是重定向到PHP腳本。

有什么問題嗎? 有什么事嗎 提前致謝。

您不能在DOM元素上調用JSON.stringify,這就是警報從不觸發的原因。 您會發現它因TypeError: Converting circular structure to JSON崩潰TypeError: Converting circular structure to JSON

您需要做的是將li數組映射到字符串數組:

var id_strings = [];
for (var i=0 ; i<post_ids.length ; i++) {
    id_strings.push(post_ids[i].getAttribute("id"));
};
post_ids_field.value = JSON.stringify(id_strings);

小提琴演示

嘗試使用

post_ids = $("#photo-selector").sortable( "toArray");
post_ids_field.value = JSON.stringify(post_ids);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM