函数调用中的语法错误

Syntax error in function call

本文关键字:错误 语法 函数调用      更新时间:2023-09-26

问候,

我已经使用了大约 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函数下声明。

比我聪明的人能告诉我出了什么问题吗?萤火虫只是说:

3

语法错误[在此错误中停止] availability_check(

你有三个问题。首先,onclick属性中有引号。浏览器会认为你想结束属性,而不是开始一个JavaScript字符串。尝试使用 ' 而不是 "

第二个问题是你在闭包中声明available。当您回到availability_check 时,available将超出范围。将var available移至$.ajax上方,并将当前var available = response;的内容更改为仅available = response;

第三个问题是你似乎不了解异步性。 将调用$.ajax,开始请求,但请求不会立即完成。它只会在请求完成之前继续return available;。然后,一旦完成,它将设置available,但到那时为时已晚。要解决此问题,请将async: false作为另一个选项添加到 $.ajax

您在属性的引号内使用引号,因此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 even 处理程序。

看起来您的引号导致解析失败。 尝试:

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

问题出在 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/

在这里使用单引号:

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

请注意,当响应返回时,会触发成功。 当你调用函数availability_check时,它将执行你的 ajax 请求并立即返回可用,然后再调用成功(除非你有一个非常快的服务器;)。 您应该使用成功函数中返回的数据进行修改。

相关文章: