我遇到了一個我似乎無法弄清楚的小問題。用JQuery,Ajax和PHP發佈到SQL
我正在創建一個應用程序,當用戶點擊一個按鈕時,根據他們點擊哪個按鈕,它會在數據庫中發佈一個數字。
有9個數字(0-9),如果他們點擊0,那麼0被放入數據庫中,如果他們點擊1,則1被放入數據庫,等等
我有一個onclick調用使用JQuery和Ajax提交默默的數據:「已提交」
$(function(){
$('#1A').click(function(e) {
alert("You clicked 1A");
var poll_ans = 1;
$.ajax
({
url: 'postpoll.php',
data: {"pollAns": poll_ans},
type: 'post',
success: alert("Submitted " + poll_ans)
});
});
});
這工作得很好,當我點擊ID爲1A,我得到警報的DIV,和警報。
但是,它不會發布到SQL數據庫。當我測試postpoll.php文件時,它自己設置URL中的變量,似乎無限期地加載。
這裏是我的代碼:
postpoll.php
<?php
session_start();
$mysqli=mysqli_connect("***","***","***","***");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if(isSet($_POST['pollAns']))
{
$answer=intval($_POST['pollAns']);
$query = "INSERT INTO test VALUES '$answer'";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
}
?>
不知道是什麼問題就在這裏 - 我相信,我錯過了一些東西,它可能是一個簡單的解決方案!
另外,一個附註 - 我最終想讓它只能投票一次,最好的方法來完成這個只需設置一個cookie,然後檢查發佈之前該cookie是否存在?我知道他們可以通過清除cookie來規避這種情況,但這不是問題。
SOLUTION: 這似乎是罪魁禍首是CloudFlare。檢查httpd.conf文件後,它顯示sql連接超時。這是因爲我試圖使用通過CloudFlare服務器路由的實際URL連接到數據庫。爲了到達實際的物理服務器,我最終使用了IP。您還可以添加指向IP的DNS記錄,並確保不會通過CloudFlare進行路由。
未來建議行動:請記住,您正在使用CloudFlare!
嘗試「isset」而不是「isSet」,同時在if語句中設置會話。 'if(isset($ _ POST ['pollAns'])){$ _SESSION ['verify'] =「true」; }'然後echo $ _SESSION ['verify']來查看頁面是否連接到sql語句 – DanceSC
您是否嘗試過更改'post'聲明不帶引號,EG'{pollAns:poll_ans}' – Vector
另外:$ result = mysqli_query($查詢); < - 看看是否有效 – DanceSC