2016-04-12 47 views
2

我在執行以下場景:
當我按下按鈕時,我將其插入到數據庫中,並且工作正常。但是,如果它成功與否,我不會得到反饋(警報不會彈出)。但是,如果我看在我的數據庫是插入如果sql插入成功,沒有反饋

if(isset($_POST['action']) && $_POST['action'] > 3) 
    { 
    $message = 'success'; 
    $message1 = 'failed'; 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     $values = $_POST['action']; 
     $status = 'pending'; 
     $sql = "INSERT INTO queue (value, status) VALUES ('".$values."', '".$status."')"; 
     if ($conn->query($sql) === TRUE) { 
?> 
<script type='text/javascript'>alert("<?php echo $message; ?>");</script> 
<?php } else { ?> 
<script type='text/javascript'>alert("<?php echo $message1; ?>");</script> 
<?php }          
    }  
    } 
?> 

這是按鈕和inputfield我用插入數據庫中的值:

<input type="text" id="number"><br> 
    <button type="button" class="btn btn-success" id="test" onclick="myAjax(number.value);">test</button> 

,這是Ajax調用:

function myAjax(value) { 


    $.ajax({ 
     type: "POST", 
     url: 'test.php', 
     data:{action:value}, 
     dataType: 'text', 
     success: function(data) { 

     } 

    }); 
} 
+0

您標記了'AJAX'您使用ajax還是表單? (你也打開SQL注入這個..) – chris85

+0

@ chris85我編輯了我的問題,現在的AJAX包括在內,是的,謝謝我必須看準備好的陳述我猜:) – Nick

+0

寫你的代碼上面的文件名我們瞭解發生了什麼 – Black

回答

0

好了,所以我有一個解決辦法做了,不是真的我怎麼想,但其現在工作這麼。基本上我在Ajax成功函數中處理它,而不是在php文件中。

,而不是這個

if(isset($_POST['action']) && $_POST['action'] > 3) 
    { 
    $message = 'success'; 
    $message1 = 'failed'; 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     $values = $_POST['action']; 
     $status = 'pending'; 
     $sql = "INSERT INTO queue (value, status) VALUES ('".$values."', '".$status."')"; 
     if ($conn->query($sql) === TRUE) { 
echo $message; 
} else { 
echo $message1; 
}          
    }  
    } 
?> 

function myAjax(value) { 


    $.ajax({ 
     type: "POST", 
     url: 'test.php', 
     data:{action:value}, 
     dataType: 'text', 
     success: function(data) { 

     } 

    }); 
} 

我現在有這樣的:

if(isset($_POST['action']) && $_POST['action'] > 3) 
    { 
    $message = 'success'; 
    $message1 = 'failed'; 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     $values = $_POST['action']; 
     $status = 'pending'; 
     $sql = "INSERT INTO queue (value, status) VALUES ('".$values."', '".$status."')"; 
     if ($conn->query($sql) === TRUE) {}          

    } 
?> 

這:

function myAjax(value) { 




    $.ajax({ 
      type: "POST", 
      url: 'test.php', 
      data:{action:value}, 
      dataType: 'text', 
      success: function(data) { 
      if(value > 3 && value != undefined && value != "") 
      { 
      alert("working"); 
      } 
      else 
      { 
      alert("not working"); 
      } 
       } 

     }); 
    } 
4

將狀態返回給AJAX調用,然後在那裏處理響應。

if(isset($_POST['action']) && $_POST['action'] > 3) 
    { 
    $message = 'success'; 
    $message1 = 'failed'; 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     $values = $_POST['action']; 
     $status = 'pending'; 
     $sql = "INSERT INTO queue (value, status) VALUES ('".$values."', '".$status."')"; 
     if ($conn->query($sql) === TRUE) { 
echo $message; 
} else { 
echo $message1; 
}          
    }  
    } 
?> 

然後在JS:

function myAjax(value) { 


    $.ajax({ 
     type: "POST", 
     url: 'test.php', 
     data:{action:value}, 
     dataType: 'text', 
     success: function(data) { 
      alert(data); 
     } 

    }); 
} 

還應考慮使用預處理語句,http://php.net/manual/en/pdo.prepared-statements.php,以避免SQL注入。

+0

我不會發布自己的答案,而是繼續關注這一問題。這實際上是正確的答案,它不工作的原因是因爲jQuery不會運行AJAX方法HTML中返回的腳本。 – aaronofleonard

+0

@ chris85謝謝你的工作:)如何提醒消息或消息1?因爲現在它提醒整個頁面或什麼? – Nick

+0

而我沒有看到回聲 – Nick

1

這是因爲你的ajax成功沒有任何作用。

在PHP:

if ($conn->query($sql) === true) { 
    echo "Success"; 
} else { 
    echo "Failure"; 
} 

在JS:

$.ajax({ 
    type: "POST", 
    url: 'test.php', 
    data: {action:value}, 
    dataType: 'text', 
    success: function(data) { 
     alert(data); 
    } 
}); 
+0

回聲不工作:( – Nick

1

最後}不會在你的榜樣關閉任何代碼塊。如果不需要=== TRUE,就如果($ conn-> query($ sql)),如果查詢反饋是真的,if將是真的。

是這樣的:

<? 
    if(isset($_POST['action']) && $_POST['action'] > 3) { 

     $conn = new mysqli($servername, $username, $password, $dbname); 
     $values = $_POST['action']; 
     $status = 'pending'; 
     $sql = "INSERT INTO queue (value, status) VALUES ('".$values."', '".$status."')"; 

     if ($conn->query($sql)) { 
      echo 'succes'; 
     } else { 
      echo 'fail';   
     }          
    }  

    ?> 

和你的JS,如:

function myAjax(value) { 


     $.ajax({ 
      type: "POST", 
      url: 'test.php', 
      data:{action:value}, 
      dataType: 'text', 
      success: function(data) { 
       alert(data); 
      } 

     }); 
    }