【问题标题】:How do I return array from AJAX as JSON and read results如何从 AJAX 以 JSON 形式返回数组并读取结果
【发布时间】:2016-03-10 21:06:12
【问题描述】:

我再次需要帮助。我正在尝试以 JSON 格式从 AJAX 返回表格的多行,并将这些值放在文本框中。这是我的代码。

HTML:

       $.ajax({ /* START AJAX */

            type: "POST", 
            url: "actionprt.php", 
            data: {"loadnumber": loadnumber},
            dataType: 'json', 

           success: function(data) {

            $("#CustomerName").val(result.Customer);
            $("#CustomerAddress").val(result.Address);
                    }                        
            }); /* END OF AJAX */   

     $.ajax({ /* START AJAX */

            type: "POST", 
            url: "actionprt2.php", 
            data: {"loadnumber": loadnumber},
            dataType: 'json', 

           success: function(data) {

            $("#prtdescription1").val(result.data[0]);
            $("#prtmethod1").val(result.data[1]);
                    }                        
            }); /* END OF AJAX */ 

PHP:

      $stmt = $con->prepare("SELECT `tblExpDescription`.`Description`,`Method`,`PONumber`,`Gallons`,`DollarAmount` FROM `tblExpenses` LEFT JOIN `tblExpDescription` ON (`tblExpenses`.`Description` = `tblExpDescription`.`ExpenseID`) WHERE (`tblExpenses`.`LoadID`= ?);");

$stmt->bind_param("i", $_POST["loadnumber"]); /* PARAMETIZE THIS VARIABLE TO YOUR QUERY */
$stmt->execute(); /* EXECUTE QUERY */
$stmt->bind_result($Description, $Method, $PONumber, $Gallons, $Amount); 
/* BIND THE RESULTS TO THESE VARIABLES */
$stmt->fetch(); /* FETCH THE RESULTS */
$stmt->close(); /* CLOSE THE PREPARED STATEMENT */

/* RETURN THIS DATA TO THE MAIN FILE */
echo json_encode(array("Description" => $Description, "Method" => $Method, "PONumber" => $PONumber, "Gallons" => $Gallons, "Amount" => $Amount));
}

这将返回一行,但可以有 0 行或多行。如何将此数组返回到表单?

【问题讨论】:

    标签: php jquery arrays json ajax


    【解决方案1】:

    你怎么弄到data,用result.data试试这样用

    success: function(data) {
       $.each(data , function(key , value){
          console.log(key);
          console.log(value);
          console.log(value.des);
          console.log(value.met);
       });
      }                        
    }); /* END OF AJAX */ 
    

    【讨论】:

    • 在 $.each 行上给我这个错误: Uncaught SyntaxError: Unexpected token )
    • 这仍然不起作用。也许是别的东西,让我描述一下。我有一个查询数据库、检索一条记录并将这些值返回到 Juery 并填写我的文本框的 ajax 调用。这很好,谢谢大家。我无法开始工作的部分是,我还需要进行另一个 ajax 调用以从同一数据库中检索多行,单独的表。现在的方式,我调用第一个ajax,然后调用第二个。那是正确的吗?我已经编辑了上面的问题以帮助描述。
    • @Musicdad 我认为如果每个人都有不同的建议,那么进行 2 个 ajax 调用也不错。我只是想知道你如何传递数据>>成功:函数(数据){并通过result.Customer .. 我认为它应该是成功的: function(result) {
    • 我使用了与第一个 ajax(即 mysqli)相同的代码,它按预期返回了 1 条记录。然后我将其更改为 mysql 以获得超过 1 条记录(因为我不知道如何“绑定”多行)并且我从控制台中什么也得不到。
    • @Musicdad 不要使用 mysql 而不是 mysqli .. 继续使用 mysqli,即使它只返回一个结果 .. 所以也许你的查询和查询的问题只返回了一行 .. 所以继续使用mysqli .. 和 1st :echo out 结果在你的 php 文件中并直接运行它.. 2nd:如果它给你不止一行所以你的 php 和查询很好..所以问题将在数组或返回的数据中阿贾克斯
    【解决方案2】:

    为他人。这是我的最终工作代码。

    jquery: $.ajax({ /* 开始 AJAX */

            type: "POST", /* METHOD TO USE TO PASS THE DATA */
            url: "actionprt2.php", /* THE FILE WHERE WE WILL PASS THE DATA */
            data: {"loadnumber": loadnumber}, /* THE DATA WE WILL PASS TO action.php */
            dataType: 'json', /* DATA TYPE THAT WILL BE RETURNED FROM action.php */
            success: function(data) {
                i = 1
               $.each(data , function(key , value){
                $.each(value , function(key2 , value2){
    
                 $("#prt" + key2 + i).val(value2);
                 $("#prt" + key2 + i).val(value2);
                 $("#prt" + key2 + i).val(value2);
                 $("#prt" + key2 + i).val(value2);
                 $("#prt" + key2 + i).val(value2);
    
                  });
                  i++
               });
              }                        
            }); /* END OF AJAX */ 
    

    php:

        $stmt = $con->prepare("SELECT `tblExpDescription`.`Description`,`Method`,`PONumber`,`Gallons`,`DollarAmount` FROM `tblExpenses` LEFT JOIN `tblExpDescription` ON (`tblExpenses`.`Description` = `tblExpDescription`.`ExpenseID`) WHERE (`tblExpenses`.`LoadID`= ?);");
    
        $stmt->bind_param("i", $_POST["loadnumber"]); /* PARAMETIZE THIS VARIABLE TO YOUR QUERY */
        $stmt->execute(); /* EXECUTE QUERY */
        $stmt->bind_result($Description, $Method, $PONumber, $Gallons, $Amount); 
        /* BIND THE RESULTS TO THESE VARIABLES */
        $detail = array();  
        while($stmt->fetch()) {           
            $detail[] = array('Description' => $Description, 'Method' => $Method, 'PONumber' => $PONumber, 'Gallons' => $Gallons, 'Amount' => $Amount);
    }
        $stmt->close(); /* CLOSE THE PREPARED STATEMENT */
    
        /* RETURN THIS DATA TO THE MAIN FILE */
        echo json_encode($detail);
        } /* END OF IF NOT EMPTY loadnumber */
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多