iT邦幫忙

0

ajax 接收回傳陣列時 多出的<pre>以及被轉換的特殊字元

  • 分享至 

  • xImage

各位大大好
小弟目前遇到一個奇怪的現象
先上code

前端

$(document).on("change","[name='size_choice']",function () {
        var item_name = $(this).attr('data-name');
        $.ajax({
            url: "../ajax.php",
            method: "POST",
            data: {
                supply_size : $(this).val(),
                item_name : item_name,
                size_choice_chk : true,
            },
            dataType: "json",
            success: function (response) {
                console.log(response);
            },
            error: function(jqXHR, textStatus, errorThrown) {
                console.log(jqXHR + ' ' + textStatus + ' ' + errorThrown);
            },
        });
    })

後端

if (filter_input(INPUT_POST, 'size_choice_chk')) {
    $supply_size = filter_input(INPUT_POST, 'supply_size');
    $item_name = filter_input(INPUT_POST, 'item_name');

    $supply_sql = "select supply_price, supply_stock, supply_applylimit_qty, supply_return, supply_setempno, supply_qty 
                   from work_supply_datatbl w
                   inner join classtbl c using(class_no)
                   where w.data_stop = 'N' and c.data_stop = 'N' and w.supply_name = '$item_name' and w.supply_size = '$supply_size'";
    //$link是pdo連結 確定正常可連
    //fn_bind是自己寫的function(prepare + execute)
    $supply_query = $link->fn_bind($supply_sql);
    $supply = $supply_query->fetch(PDO::FETCH_ASSOC);
    
    $return_data_array = array(
        "supply_price"=>$supply['supply_price'],
        "supply_stock"=>$supply['supply_stock'],
        "supply_applylimit_qty"=>$supply['supply_applylimit_qty'],
        "supply_return"=>$supply['supply_return'],
        "supply_setempno"=>$supply['supply_setempno'],
        "supply_qty"=>$supply['supply_qty']
    );
    var_dump($return_data_array);

傳回資料
由於網頁會擋(要把單引號拿掉)

<pre>
Array
(
    [supply_price] => '&gt'
    [supply_stock] => '&gt'
    [supply_applylimit_qty] => '&gt'
    [supply_return] => '&gt'
    [supply_setempno] => '&gt' 90169
    [supply_qty] => '&gt'
)

</pre>

1.首先我想請問 為何會出現pre標籤?
2.再來就是 為什麼陣列的 > 會被替換掉 這我一直想不通 照理來說後端就應該成功存呈陣列了吧(要做json_encode當然更不行了QQ)

因為回傳格式不是 json 格式 被當成 html 了
咖咖拉 iT邦好手 1 級 ‧ 2020-06-30 16:19:59 檢舉
自刪
st474ddr iT邦新手 2 級 ‧ 2020-06-30 16:26:14 檢舉
恩...我笨了
感謝兩位
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
japhenchen
iT邦超人 1 級 ‧ 2020-06-30 16:29:12
最佳解答

........(如何自刪?)

Array
(
[supply_price] => '&gt'
[supply_stock] => '&gt'
[supply_applylimit_qty] => '&gt'
[supply_return] => '&gt'
[supply_setempno] => '&gt' 90169
[supply_qty] => '&gt'
)

這不是JSON格式啊!......

st474ddr iT邦新手 2 級 ‧ 2020-06-30 16:39:04 檢舉

我明白
一時腦暈@~@

0

1.首先我想請問 為何會出現pre標籤?
2.再來就是 為什麼陣列的 > 會被替換掉 這我一直想不通 照理來說後端就應該成功存呈陣列了吧(要做json_encode當然更不行了QQ)

其實,你這兩個問題。可能都是同一個原因。
不過原因並不在你目前po的程式碼上,而是在其它地方。

目前我得先知道幾件事。

你最後的結果是直接在網頁上看的?
還是在

success: function (response) {
                console.log(response);
            },

這邊看的。

因為就目前唯一有看到的問題,是你的輸出並非是json格式。
但你的ajax是宣告接json格式。

我擔心你會誤解了陣列傳送的問題。

st474ddr iT邦新手 2 級 ‧ 2020-06-30 16:57:38 檢舉

我是用開發者工具的 network 看ajax的回傳值XDD~
畢竟console.log那邊秀不出來

基本上我看你懂原因了。我就不多說了。

st474ddr iT邦新手 2 級 ‧ 2020-06-30 17:16:24 檢舉

是的 感謝大大

我要發表回答

立即登入回答