2014-05-04 96 views
0

這裏是我的按鈕返回json_encode作爲數組不工作

$("#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以及用戶輸入的車牌,並將該值返回到名爲的另一個輸入欄「vehicle_name」「assigned_driver」但沒有任何事情發生時,單擊按鈕甚至沒有錯誤警報消息。任何想法在哪裏我錯了嗎?

+0

我沒有看到任何錯誤..從你說這是一個問題,而不是PHP?你可以確認'#editVehicle'在javascript綁定事件觸發之前存在嗎?是一個'$(document).ready(function(){'?)的javascript裏面可以確認ajax調用正在觸發嗎? –

+0

查看我編輯的editVehicle按鈕。 – fanboime12

回答

0

的錯誤是在這裏 -

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

你只要麼succcesserror但兩者不能同時返回,這樣的條件始終爲false。

如同上述條件之前返回兩個或未定義的屬性errorsuccess的檢查 -

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); 
    } 
    }); 
}); 
+0

第二個sulcond返回undefined而第一個什麼也沒有發生 – fanboime12

+0

你是否使用螢火蟲控制檯?..你能給我回應嗎? –

+0

該警報只顯示「undefined」 – fanboime12