簡體   English   中英

JQuery.get語法錯誤

[英]JQuery.get Syntax Error

我一直在瘋狂試圖解決這個問題。 我有一個PHP腳本,該腳本返回true / false,並且標頭設置為Content-Type:text / plain。

當我使用一個簡單的.get像這樣時:

$.get("ip.php");

我可以看到該調用以及在Firebug中加載的數據。

但是,當我嘗試增加更多復雜性時,會出現“ SyntaxError:syntaxerror”。 這是我正在使用的jQuery:

var hello;
$.get('ip.php', function(data){
   hello = data;
   console.log(hello);
});

if (hello == "false") {
    $( "#status").removeclass("working").addClass("notworking");
    $(".stat").html("<li class="title">STATUS: NOT WORKING</li>");
} else {
    $(".stat").html("<li class="title">STATUS: WORKING</li>");
}

我究竟做錯了什么? 在此先感謝您的幫助。

那是因為AJAX調用是異步的—在jQuery實際收到服務器的響應並更新hello變量之前,將對條件語句進行評估。

因此,解決方案是將條件語句移至$.get()的成功回調中。

p / s:另外,您沒有正確轉義.html()的字符串。 要么使用\\"轉義雙引號,要么使用單引號,即'

var hello;
$.get('ip.php', function(data){
    hello = data;
    if (hello == "false") {
        $( "#status").removeclass("working").addClass("notworking");
        $(".stat").html("<li class=\"title\">STATUS: NOT WORKING</li>");
    } else {
        $(".stat").html("<li class=\"title\">STATUS: WORKING</li>");
    }
});

更好的是:改為使用延遲的對象 ,例如.done() .fail() .always()等(只要您認為合適)。 它們提供了更好的通用性,並允許您在代碼中的任何位置檢查AJAX調用的狀態:

var ip = $.get('ip.php'); /* Make GET request */

/* Deferred object */
ip.done(function(data){
    if (data == "false") {
        $( "#status").removeclass("working").addClass("notworking");
        $(".stat").html("<li class=\"title\">STATUS: NOT WORKING</li>");
    } else {
        $(".stat").html("<li class=\"title\">STATUS: WORKING</li>");
    }
}).fail(function(jqXHR, textStatus, errorThrown){
    // Optional
    // console.log('.get failed ' + textStatus + ' ' + errorThrown);
}).always(function(){
    // Optional
    // console.log('$.get completed regardless of status');
});

盡管其他答案是正確的,但這並不是您看到的錯誤的根源。 錯誤來自以下幾行:

    $(".stat").html("<li class="title">STATUS: NOT WORKING</li>");
} else {
    $(".stat").html("<li class="title">STATUS: WORKING</li>");

請注意語法突出顯示。 您正在嘗試在字符串中使用引號,而該引號實際上會終止該字符串。 您可以這樣逃避它們:

    $(".stat").html("<li class=\"title\">STATUS: NOT WORKING</li>");
} else {
    $(".stat").html("<li class=\"title\">STATUS: WORKING</li>");

或者在某處使用單引號而不是雙引號:

    $(".stat").html('<li class="title">STATUS: NOT WORKING</li>');
} else {
    $(".stat").html('<li class="title">STATUS: WORKING</li>');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM