2011-05-22 91 views
0

問候,語法錯誤在函數調用

我已經與這個約1或2小時,看來我找不到這個功能我已經創建了通過查詢數據庫中的東西的可用性錯誤jQuery和Ajax。

我打電話給測試紫外線鏈接的函數,因爲我之前無法捕獲任何錯誤。

<a href="#" onclick="availability_check("Despacho", "22/05/2011","12:30", "12:45")">TEST</a> 

和函數的代碼如下:

function availability_check(location, date, from, to){ 
    var check = 'location='+ location + '&date='+ date + '&from=' + from + '&to=' + to; 

    $.ajax({ 
     type: "POST", 
     url: "check-availability.php", 
     data: check, 
     cache: false, 
     success: function(response){ 
        var available = response; 
       } 
    }); 

    return available; 
} 

剛下document_ready函數聲明。

能有人比我聰明告訴我什麼是錯的?螢火蟲只是說:

語法錯誤 availability_check(

回答

2

您有三個問題。首先,你在onclick屬性中有引號。瀏覽器會認爲你想結束這個屬性,而不是啓動一個JavaScript字符串。嘗試使用'而不是"

第二個問題是你在關閉中聲明available。當你回到availability_check時,available將超出範圍。將var available移至$.ajax以上,並將當前的var available = response;更改爲available = response;

第三個問題似乎你不明白異步性。 $.ajax將被調用,開始請求,但請求不會立即完成。在請求完成之前,它將繼續到return available;。然後,一旦它完成,它將設置available,但那時已經太晚了。要解決此問題,請將async: false作爲$.ajax的另一個選項。

+0

太棒了。感謝所有這些,這非常有用。 :) – 2011-05-22 22:46:59

2

[此錯誤停止]你正在使用的內部屬性的引號內的行情報價,所以availability_check(後的第一次報價成爲結束報價。的onclick屬性修改成:

<a href="#" onclick="availability_check('Despacho', '22/05/2011', '12:30', '12:45')">TEST</a> 

或:

<a href="#" onclick="availability_check(&quot;Despacho&quot;, &quot;22/05/2011&quot;, &quot;12:30&quot;, &quot;12:45&quot;)">TEST</a> 

解耦JavaScript代碼和HTML代碼也是一種很好的做法,所以不要將其放置在onclick屬性中,而應該更好地創建data-*屬性,給元素一個id,然後使用單獨的JavaScript文件獲取該元素並在其上附加onclick甚至處理程序。

+0

謝謝,但onclick只是測試purpouse,因爲我無法找到錯誤。 – 2011-05-22 23:03:07

0

看起來像您的報價導致解析失敗。嘗試:

<a href="#" onclick="availability_check('Despacho', '22/05/2011','12:30', '12:45')">TEST</a> 
0

的問題是與onclick屬性:

onclick="availability_check("Despacho", "22/05/2011","12:30", "12:45")" 

的問題是,Javascript代碼片段中的引號使用引號界定HTML屬性衝突。這是爲什麼最好不要使用內聯onclick屬性的原因之一。

由於您使用jQuery,爲什麼不使用它的事件處理程序綁定功能。給你鏈接的id屬性,並執行以下操作:

$('#yourId').click(function() { 
    availability_check("Despacho", "22/05/2011","12:30", "12:45"); 
}); 

還有其他選擇整個主機的,基於CSS選擇器,如果你喜歡。要到什麼jQuery的必須提供交手,我在這裏推薦http://jqfundamentals.com/

0

使用單引號:

<a href="#" onclick="availability_check('Despacho', '22/05/2011','12:30', '12:45')">TEST</a> 
0

知道,成功的火災時,響應的回報。當你調用函數availability_check時,它將會執行你的ajax請求,並在調用成功之前立即返回(除非你有一個非常快的服務器;)。您應該修改成功函數中的返回數據....

+0

即使你有一個非常快的服務器,它將等待下一個事件循環來觸發你的回調。 – icktoofay 2011-05-22 21:54:37

+0

@icktoofay,是的,我正在諷刺;)。 – hvgotcodes 2011-05-22 21:55:51