javascript - Jquery 中没有从 php json_encode 接收到数据

标签 javascript php jquery json ajax

我的代码需要帮助,因为我一直在浏览互联网寻找问题的答案,但仍然可以获得可以解决我的问题的答案。我是 AJAX 的新手。我想将 php 文件中的 json_encode 中的数据显示到我的 AJAX,以便 AJAX 可以将其传递到 HTML 中的文本框。

我的问题是 php 文件中的 Json_encode 有来自 json 格式的查询的数据,但是当我将其传递给 ajax success 时,函数(用户)为空。 Console.log 也是空数组。我尝试过使用 JSON.parse 但我的代码仍然出现问题,因为用户本身是空的。请提供任何帮助,我们将不胜感激。谢谢。

car_detail.js

    $(document).ready(function() {


        function $_GET(q,s) {
            s = (s) ? s : window.location.search;
            var re = new RegExp('&'+q+'=([^&]*)','i');
            return (s=s.replace(/^\?/,'&').match(re)) ?s=s[1] :s='';
        }
            var car_rent_id1 = $_GET('car_rent_id');
            car_rent_id.value = car_rent_id1;

                    $.ajax({  
        type: 'POST',
        url: "http://localhost/ProjekCordova/mobile_Rentacar/www/php/car_detail.php",
        dataType: "json",
        cache: false, 
        data: { car_rent_id: this.car_rent_id1 },
        success:  function(users) {

        console.log(users);
        $('#car_name').val(users.car_name); 

        }
    });
    });

car_detail.php

    $car_rent_id = $_GET['car_rent_id'];   
    $query = mysql_query("SELECT c.car_name, c.car_type, c.car_colour, 
    c.plate_no, c.rate_car_hour, c.rate_car_day, c.car_status, 
    r.pickup_location
    FROM car_rent c
    JOIN rental r ON c.car_rent_id=r.car_rent_id
    WHERE c.car_rent_id = $car_rent_id");

    $users = array();
      while($r = mysql_fetch_array($query)){
    $user = array(
        "car_name" => $r['car_name'], 
        "car_type" => $r['car_type'], 
        "car_colour" => $r['car_colour'], 
        "plate_no" => $r['plate_no'], 
        "rate_car_hour" => $r['rate_car_hour'], 
        "rate_car_day" => $r['rate_car_day'], 
        "car_status" => $r['car_status'], 
        "pickup_location" => $r['pickup_location']
        );
         $users[] = $user;
    // print_r($r);die;
    }
    print_r(json_encode($users)); //[{"car_name":"Saga","car_type":"Proton","car_colour":"Merah","plate_no":"WA2920C","rate_car_hour":"8","rate_car_day":"0","car_status":"","pickup_location":""}]

car_detail.html

  <label>ID:</label>
                <input type="text" name="car_rent_id" id="car_rent_id"><br>

                <label>Car Name:</label>
                <div class = "input-group input-group-sm">
                    <span class = "input-group-addon" id="sizing-addon3"></span>
                    <input type = "text" name="car_name" id="car_name" class = "form-control" placeholder = "Car Name" aria-describedby = "sizing-addon3">
                </div></br>

                <label>Car Type:</label>
                <div class = "input-group input-group-sm">
                    <span class = "input-group-addon" id="sizing-addon3"></span>
                    <input type = "text" name="car_type" id="car_type" class = "form-control" placeholder = "Car Type" aria-describedby = "sizing-addon3">
                </div></br>

最佳答案

删除 this.car_rent_id1 中的 thiscache: false 这适用于 HEADGET ,在 AJAX 中您使用的是 POST,但在 PHP 中您使用的是 $_GET。并且 car_rent_id 未定义,您的函数 $_GET(q,s) 需要两个参数,但只传递了一个。

$(document).ready(function() {
    function $_GET(q,s) {
        s = (s) ? s : window.location.search;
        var re = new RegExp('&amp;'+q+'=([^&amp;]*)','i');
        return (s=s.replace(/^\?/,'&amp;').match(re)) ?s=s[1] :s='';
    }
    var car_rent_id1 = $_GET('car_rent_id'); // missing parameter
    car_rent_id.value = car_rent_id1; // where was this declared?

    $.ajax({
        type: 'POST',
        url: "http://localhost/ProjekCordova/mobile_Rentacar/www/php/car_detail.php",
        dataType: "json",
        data: { car_rent_id: car_rent_id1 },
        success:  function(users) {
            console.log(users);
            $('#car_name').val(users.car_name);
        }
    });
});

您还可以使用$.post() , post 只是 $.ajax()

的简写
$(document).ready(function() {
    function $_GET(q,s) {
        s = (s) ? s : window.location.search;
        var re = new RegExp('&amp;'+q+'=([^&amp;]*)','i');
        return (s=s.replace(/^\?/,'&amp;').match(re)) ?s=s[1] :s='';
    }
    var car_rent_id1 = $_GET('car_rent_id');
    car_rent_id.value = car_rent_id1;

    $.post('http://localhost/ProjekCordova/mobile_Rentacar/www/php/car_detail.php', { car_rent_id: car_rent_id1 }, function (users) {
        console.log(users);
        $('#car_name').val(users.car_name);
    });
});

并在您的 PHP 中进行更改

$car_rent_id = $_GET['car_rent_id']; 

$car_rent_id = $_POST['car_rent_id'];

关于javascript - Jquery 中没有从 php json_encode 接收到数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44006623/

相关文章:

javascript - 将 php 和 python 中的 RegEx 语法转换为 JS

javascript - 如何删除 CanvasJS 中的工具提示和数据集?

php - 对 laravel 关系集合的自定义排序

php - 在 mysql 中得到错误的结果?

javascript - ajax调用发生内部服务器错误

jquery - Ajax beforeSend 功能似乎不起作用

javascript - 制作带点的输入字段掩码

javascript - 当用户完成输入时运行 JS 代码

javascript - 转换数组以保存在mysql nodejs中

javascript - jQuery 脚本不会运行