返回json_encode作为数组不工作

时间:2014-05-04 02:11:36

标签: php jquery html mysql ajax

这是我的按钮

$( "#editVehicle" ).button().click(function( event ) {

    event.preventDefault();
    var vp = $("input[name=vehicle_plate]").val(),
    dataString = 'vehicle_plate='+ vp;

    $.ajax({
        type: "POST",
        url: "editvehicle.php",
        data: dataString,
        dataType: "json",
        success: function(data){
            if(!data.error && data.success) {
                $("input[name=vehicle_model]").val(data.vehicleName);
                $("input[name=assigned_driver]").val(data.assignedDriver);
            } else {
                alert(data.errorMsg);
            }
        }
    });

});

这是我的PHP

<?PHP
include("db.classes.php");
$g = new DB();
$g->connection();

if($_POST) {
    $vehiclePlate = $g->clean($_POST["vehicle_plate"],1);
    $g->edit($vehiclePlate);
}
$g->close();
?>

这是我的db.classes

public function edit($vehiclePlate)
{
    $sql = "select vehicle_name, driver_id from vehicles where vehicle_plate='$vehiclePlate'";

    $result = mysql_query($sql) or die(json_encode(array("error" => 0, "errorMsg" => "MySQL query failed.")));
    $row = mysql_fetch_array($result);

    if(mysql_num_rows($row)) {
        echo json_encode(array(
            "success" => 1,
            "vehicleName" => $row['vehicle_name'],
            "assignedDriver" => $row['driver_id']
        ));
    } 
    else {
        echo json_encode(array(
            "error" => 1,
            "errorMsg" => "No rows returned"
        ));
    }

}

按钮标记

<button type="submit" id="editVehicle" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false">
    <span class="ui-button-text">Edit</span>
</button>

我的html中有一个输入字段,我输入车牌,然后当用户点击按钮时,程序在数据库中搜索车辆名称和driver_id,用户输入的牌照,并将值返回到另一个名为<的输入字段strong>&#34; vehicle_name&#34; 和&#34; assigned_driver&#34; 但单击按钮时甚至没有发生任何错误警告消息。我知道我在哪里错了吗?

1 个答案:

答案 0 :(得分:0)

错误在这里 -

if(!data.error && data.success) {

您只返回succcesserror,但不能同时返回,因此条件始终为false。

在条件之前返回两者或检查未定义的属性errorsuccess,如< - p>

if ((typeof data.error != 'undefined' && !data.error) || (typeof data.success != 'undefined' && data.success))

既然你要单独归还error,那么你不需要检查是否,你也可以尝试这个,也许是更好的解决方案 -

$.ajax({
    type: "POST",
    url: "editvehicle.php",
    data: dataString,
    dataType: "json",
    success: function(data){

        $("input[name=vehicle_model]").val(data.vehicleName);
        $("input[name=assigned_driver]").val(data.assignedDriver);

    },
    error: function(data){
        alert(data.errorMsg);
    }
    });
});