简体   繁体   English

如何使用AJAX从PHP传递数组

[英]How to pass an array from PHP using AJAX

I'm having some issues displaying an array which I created in a PHP file. 我在显示在PHP文件中创建的数组时遇到一些问题。 The response data in question is data["vessel"] I have some jQuery: 有问题的响应数据是data["vessel"]我有一些jQuery:

j$('select[name=vessel]').change(function(e) {
        var tour_ID = j$('select[name=tour]').val();
        var trip_Date = j$('input[name=trip_Date]').val();
        var data = {
              "action": "Count_Vessels",
              "trip_Date": trip_Date,
              "tour_ID":tour_ID
            };
            data = j$(this).serialize() + "&" + j$.param(data);
            j$.ajax({
              type: "POST",
              dataType: "json",
              url: "../include/booking_Modify.php", 
              data: data,
              success: function(data) {
                  //console.log("vessel stack: " + data["vessel"][0]);
                  var arr=JSON.parse(data["vessel"]);
                  console.log("vessel stack: " + arr[0]);
                  console.log("Form submitted successfully.\nReturned json: " + data["json"]);
              },
              error: function (request) {
                console.log(request.responseText);
            }
            });
    });

The PHP: PHP:

function count_Vessels(mysqli $conn, $trip_Date, $tour_ID){
    $return = $_POST;
    $vessel_Stack = array(); 
    $vessel_Query = "SELECT * FROM Vessel";
    if(!$vessel_Results = $conn->query($vessel_Query)){
        die('There was an error running the query [' . $conn->error . ']');
    }
    while( $vessel_Row = $vessel_Results->fetch_assoc() ){
        $vessel_Stack[$vessel_Row['ve_ID']] = $vessel_Row['vessel_Name'];
    }

    $return['vessel'] = $vessel_Stack;
    $return["json"] = json_encode($return);
    echo json_encode($return);
 }

when I display data["json"] in console, I get Returned json: {"vessel":{"1":"Thriller","2":"Jammin","3":"Thunderstruck","4":"Wildthing","6":"Joyride"} 当我在控制台中显示data [“ json”]时,我Returned json: {"vessel":{"1":"Thriller","2":"Jammin","3":"Thunderstruck","4":"Wildthing","6":"Joyride"}

Which is awesome, but I don't know how to do that using the data["vessel"] Any help would be greatly appreciated. 太棒了,但是我不知道如何使用data["vessel"]来做到这一点,将不胜感激。

I solved my own riddle. 我解决了自己的难题。 Because data["vessel"] is an array, I had to loop through it. 因为data [“ vessel”]是一个数组,所以我不得不遍历它。 Doing so like this worked: 这样做是可行的:

j$.each(data["vessel"], function(key, val) {
    console.log('index ' + key + ' value ' + val);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM