2013-09-28 55 views
5

Xin chào Tôi có một tệp php khi được gọi bằng mã ajax/jquery của tôi chèn một hàng vào bảng mySQL. Tuy nhiên tôi muốn một số loại phản hồi để biết liệu việc chèn có thành công hay không. Đây là mã hiện tại của tôi:AJAX/Jquery - Nhận phản hồi từ tệp php

ajax/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

đâu giá là javascript? –

+0

'$ echo' phải là' echo'. –

+0

@SheikhHeera Đã sửa lỗi. Ngoài ra giá là một biến được khai báo trước đó trên – Matt9Atkins

Trả lời

6

Để có được một thông tin phản hồi và gửi nó vào jQuery.ajax bạn có thể sử dụng

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 
} 

Ở phía khách hàng, trong số success gọi lại

của bạn
success: function(data){ 
    alert(data); // either error or success 
} 

Hoặc bạn có thể kiểm tra xem nó thích

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

Ngoài ra, đâu là biến $price của bạn, tôi đã không nhìn thấy nó và như tôi mrntioned trong bình luận rằng $echo nên echo.

+1

Tôi cảm thấy điều quan trọng cần đề cập đến là 'lỗi' không liên quan gì đến câu trả lời 'không thành công' nhưng yêu cầu không thành công. Bất kỳ phản hồi nào nhận được dẫn đến trình xử lý 'success',' error' chỉ được gọi cho các trạng thái ngoài 400. Hơn nữa, chúng thậm chí không lấy các tham số giống nhau. – Kiruse

+0

@ Derija93, tôi không thêm bất kỳ phương pháp lỗi nào ở đây, bạn đang nói về phương pháp nào? –

+0

Tôi không nhận được bất kỳ thông điệp cảnh báo nào bất kể thành công hay thất bại – Matt9Atkins

1

Trong phần PHP bạn có thể làm điều này:

$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

dụ chính, bạn có thể làm nhiều hơn nữa để kết nối thông tin phản hồi vs xử lý

$.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

giải pháp tốt nhất trong quan điểm khiêm tốn của tôi – drukaman

Các vấn đề liên quan