我有一個Ajax腳本,每20秒就可以在我的服務器上調用一個php文件。Ajax成功,如果語句和echo mySQL查詢結果
然後服務器運行一個簡單的mysql查詢來返回特定字段的內容。
如果這個字段是空白的,我希望php文件回顯單詞「pending」,當被成功處理程序捕獲時,它會回想起初始函數。但是,如果該字段不是空白,它將包含我想要將用戶重定向到的URL。該字段將更新從第一次通話開始5秒到5分鐘之間的任何地方,並且該時間不能改變。
我認爲主要問題可能與我的PHP文件,因爲我不認爲它是以成功處理程序識別的方式回顯數據。然而,我已經詳細說明了我的代碼的兩個部分,而成功處理程序似乎構建正確,我不是100%確定。
很新,所以如果道歉我沒有正確地解釋自己,但如果有人能幫助這將是巨大的:
更新 - 爲清楚起見,我所尋求實現如下:
Ajax調用我的PHP文件。
PHP文件查詢數據庫
如果現場查詢不包含任何數據迴應「等待」這個詞來阿賈克斯成功處理程序(IF),這反過來又回憶起最初的功能/ ajax調用。
如果所查詢的字段包含數據(將是一個URL),將以通過window.location.assign(data)重定向用戶的格式將此結果回顯給ajax成功處理程序(ELSE)。
進一步更新
我設法解決這個問題使用來自@mamdouhalramadan和@martijn
我也改變setInterval來逐步的setTimeout作爲該查詢功能的建議的組合是導致反應疊起來如果服務器運行緩慢,並因此導致錯誤。我還添加了緩存:假的,並在成功處理程序進一步的選擇要考慮到不同的效果,在IE瀏覽器:
AJAX
function poll() {
$.ajax({
url: 'processthree.php?lead_id='+lead_id,
type: "GET",
cache: false,
async: false,
success: function(data3) {
//alert("pending called " + data3)
if(data3.indexOf("pending") >-1){
setTimeout(poll, 20000);
}
else if ((navigator.userAgent.indexOf('MSIE') != -1)) {
//alert("Submit success - MSIE: " + data3);
parent.window.location.replace(data3);
}
else{
//alert("process three called " + data3)
window.top.location.assign(data3);
}
},
error: function(xhr, error){
//alert("Error");
//alert("Error: " + error + ", XHR status: " + xhr.status);
},
});
}
setTimeout(poll, 20000);
PHP
$query = ("SELECT column FROM table WHERE id = '$lead_id'") or die(mysql_error());
$result = mysql_query($query);
$return = array();
while($row = mysql_fetch_assoc($result))
{
$return = 'pending';
if($row['column'] != '')
{
$return = $row['column'];
}
}
echo $return;
縮進是你的朋友... –
我改變了你的代碼了一下,你在mysql_query()上做了一個mysql_query(),修正了這個問題。在你的同時改變了if/else,同時改爲可讀性(IMO):) – Martijn
@Martijn - 你的編輯無效.. –