2013-09-28 24 views
5

こんにちは私は私のajax/jqueryコードで呼び出されたときにmySQLテーブルに行を挿入するPHPファイルを持っています。しかし、挿入が成功したかどうかを知るために何らかのフィードバックが必要です。ここに私の現在のコードは次のとおりです。AJAX/Jquery - 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

価格は取り扱いのjavascript対フィードバックを接続するために多くを行うことができますか? –

+0

'$ echo'は' echo'です。 –

+0

@SheikhHeeraは修正しました。また、価格は – Matt9Atkins

答えて

6

フィードバックを得る、あなたが

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 
} 

を使用することができjQuery.ajaxに送信しますクライアント側のsuccessコールバック

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

またはあなたの$price変数があり、私はそれを見ていないと私は$echoechoなければならないことをコメントでmrntionedとしても

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

、同じようにそれを確認することがあります。

+1

「エラー」は「失敗」の応答とは関係ありませんが、失敗した要求には言及することが重要です。受け取った応答は 'success'ハンドラにつながり、' error'は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

主な例を、あなたは

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

関連する問題