函数调用中的语法错误
Syntax error in function call
问候,
我已经使用了大约 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("Despacho", "22/05/2011", "12:30", "12:45")">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 请求并立即返回可用,然后再调用成功(除非你有一个非常快的服务器;)。 您应该使用成功函数中返回的数据进行修改。
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]
- jQuery AJAX Post方法错误(语法错误)
- 如何“;修复解析错误:语法错误,意外'{'in”用于php
- 错误:错误:语法错误,无法识别的表达式:
- 未捕获错误:语法错误,无法识别的表达式:ajaxsample/update_agenda(CodeIgniter)
- 未捕获错误:语法错误,无法识别表达式Jquery选择器单引号与双引号
- Javascript ( jQuery ) 错误: 语法错误: 缺少 ) 在参数列表之后
- 错误:语法错误:令牌“”,“”是意外的标记
- 未捕获的错误:语法错误,无法识别的表达式:输入:复选框[名称=ninja_forms_field_57[术语]]
- 未捕获的错误:语法错误,无法识别的表达式:“.b-brand-box”
- 未捕获的错误:语法错误,无法识别的表达式:href
- ReactJS 返回解析器错误语法错误:在 AJAX 调用 JAVA servlet 后出现意外的标记 a
- jQuery:未捕获错误:语法错误,无法识别的表达式
- j查询错误 - 语法错误:缺少:在属性 ID 之后
- 在使用 Gulp 在 javascript 中声明对象时,在 Git bash 中出现以下错误“语法错误:意外标识符”
- 获取未捕获错误:语法错误、无法识别的表达式
- 获取错误语法错误:属性列表 url 后缺少 }:http://localhost/mcportal/public/pos
- 为什么我收到错误“语法错误:非法字符”
- 未捕获错误:语法错误,无法识别的表达式