簡體   English   中英

將值從JQUERY傳遞給PHP,並返回JSON

[英]Pass value from JQUERY to PHP ,and return a JSON

當通過ajax從jquery調用php時,有任何響應。我更改了dataType並放了json而不是html 。我認為問題是,因為ajax調用永遠不會觸發php代碼,似乎$_POST['retriveForm']永遠不會帶來價值。

PHP:

if(isset($_POST["retriveForm"])) {
    $data_json =array();
    $id  = $_POST['retriveForm'];
    $sql = "SELECT * FROM mytable WHERE Id = $id";
    while ($row = mysqli_fetch_array($db->consulta($sql)) {
            $data_json  = array('item1' => $row['item1'],'item2' => $row['item2']) ;
    }
    $data_json['item_array'] = call_a_function_return_array();//this works
    echo json_encode($data_json);
}

和jQuery:

$(document.body).on('click', '.edit', function() {
    var id = $(this).data('id');
    $.ajax({
        type: "POST",
        url: "is_the_same_page.php",
        data: {
            retriveForm: id
        },
        dataType: "json",
        success: function(response) {
            $('#myForm').find('input').eq(1).val(response.item1);
        }
    });
});

如果重要的話,代碼都在同一頁上。

由於AJAX代碼位於同一腳本中,因此在這種情況下,請確保您不輸出任何常規HTML。 您的PHP代碼應該在腳本的開始處,然后輸出任何HTML。 並且您應該在回顯JSON之后退出腳本。 否則,您的JSON將與HTML混合在一起,而jQuery將無法解析響應。

另外,您沒有在循環中正確添加到$data_json 您每次都覆蓋變量,而不是將其壓入。

<?php
// code here to set up database connection
if(isset($_POST["retriveForm"])) {
    $data_json =array();
    $id  = $_POST['retriveForm'];
    $sql = "SELECT * FROM mytable WHERE Id = $id";
    while ($row = mysqli_fetch_array($db->consulta($sql)) {
        $data_json[]  = array('item1' => $row['item1'],'item2' => $row['item2']) ;
    }
    $data_json['item_array'] = call_a_function_return_array();//this works
    echo json_encode($data_json);
    exit();
}
?>
<html>
<head>
...

然后在success函數中,您需要為response的元素建立索引,因為它是一個數組,而不是單個對象。

暫無
暫無

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

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