繁体   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