函数调用中的语法错误

时间:2011-05-22 21:48:16

标签: javascript jquery

问候,

我已经使用了大约1或2个小时,似乎我找不到我在创建的这个函数中的错误,通过jQuery和Ajax检查数据库中某些东西的可用性。

我正在使用此链接调用该函数用于测试purpouse,因为我之前无法捕获任何错误。

<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(

6 个答案:

答案 0 :(得分: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-*属性更好,为元素赋予{{ 1}},然后使用单独的JavaScript文件获取元素并在其上附加onclick even处理程序。

答案 1 :(得分:2)

那里有三个问题。首先,您在onclick属性中有引号。浏览器会认为您要结束属性,而不是启动JavaScript字符串。尝试使用'代替"

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

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

答案 2 :(得分:0)

看起来您的报价导致解析失败。尝试:

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

答案 3 :(得分: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/

答案 4 :(得分:0)

在这里使用单引号:

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

答案 5 :(得分:0)

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