2013-09-28 50 views
5

嗨我有一個php文件,當我的ajax/jquery代碼調用插入一行到mySQL表中。不過,我想要一些反饋來知道插入是否成功。這裏是我當前的代碼:AJAX/jquery - 獲取來自php文件的響應

阿賈克斯/ jQuery的:

$.ajax({ 
    url: "update.php", 
    success: function(){ 
     alert("success");  
    }, 
    error:function(){ 
     alert("failure"); 
    } 
}); 

PHP:

$conn = ""; 
try { 
    $conn = new PDO("mysql:host=XXX;dbname=XXX", "XXX", "XXX"); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch (PDOException $e) { 
    echo "Cannot connect to database, try again later"; 
} 
$stmt = $conn->prepare("INSERT INTO data (price) VALUES (:price)"); 
$stmt->bindParam(":price", $price); 
$stmt->execute(); 
$conn=null; 
+0

哪裏是價格? –

+0

'$ echo'應該是'echo'。 –

+0

@SheikhHeera固定。另外價格是早些時候聲明的變量 – Matt9Atkins

回答

6

爲了得到一個反饋,並將其發送到jQuery.ajax你可以使用

if($stmt->execute()) { // returns true on success 
    exit('success'); // Prints success and exit the script 
} 
else{ // returns false on fail 
    exit('error'); // Prints error and exit the script 
} 

在客戶端,在您的success回調

success: function(data){ 
    alert(data); // either error or success 
} 

或者,你可以檢查它喜歡

if(data == 'success') { 
    // ok 
} 

而且,當你$price變量,我沒有看到它,就像我在評論mrntioned是$echo應該echo

+1

我覺得有必要提一下,'錯誤'與'失敗'響應無關,但失敗的請求。任何接收到的響應都會導致「成功」處理程序,「錯誤」僅針對400以外的狀態調用。而且,它們甚至不採用相同的參數。 – Kiruse

+0

@ Derija93,我沒有在這裏添加任何錯誤方法,你在談論哪一個? –

+0

無論成功或失敗,我都沒有收到任何提醒消息 – Matt9Atkins

1

在PHP部分,你可以這樣做:

$conn = ""; 
try { 
    $conn = new PDO("mysql:host=XXX;dbname=XXX", "XXX", "XXX"); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch (PDOException $e) { 
    echo "Cannot connect to database, try again later"; 
} 
$stmt = $conn->prepare("INSERT INTO data (price) VALUES (:price)"); 
$stmt->bindParam(":price", $price); 
$stmt->execute(); 
$count = $stmt->rowCount();// Returns the number of rows affected by the last SQL statement 
$conn=null; 
if ($count > 0) 
{ 
    $res = "success"; 
} 
else 
{ 
    $res = "error"; 
} 
//maybe you need to encode the result to use in your js ajax functions! 
json_encode($res); 
exit(); 
7

主要例如,你可以做更多的事情來連接反饋VS JavaScript的處理

$.ajax({ 
    url: "update.php", 
    data: $('#form_id').serialize(), 
    dataType: "json", 
    timeout: 15000,  
    success: function(response){ 
    switch(response.status){ 
     case 'saved': 
     alert(response.message); // do what you want 
     break; 
     case 'empty': 
     alert(response.message); 
     break; 
     default: 
     alert("unknown response"); 
    } 
    }, 
    error:function(){ 
    alert("failure"); 
    } 
}); 


// remote php file 
<?php 

    // on database success or whatever 
     $return_arr["status"] = 'saved'; 
     $return_arr["message"] = utf8_encode("Your data ".$name." was saved"); 
     echo json_encode($return_arr); 
     exit(); 

?> 
+1

我愚見的最佳解決方案 – drukaman