在firebug中找到JQuery语法错误,但在我的代码中没有

时间:2012-12-05 07:41:02

标签: php ajax jquery post

在PHP页面中,我有一个下拉列表,触发jQuery更改功能,并使用AJAX进行POST,以填充页面中的第二个下拉列表。

它应该都非常简单,但Firebug会为'?'引发语法错误在运行时出现在我的代码中,实际上并不在我的代码中。

这是我的javascript代码:

$(document).ready(function() {
    $('#taglist').change(function(){
        $.ajax({
            type: "POST",
            url: "../includes/ajax.php",
            data: "taglist=" + $(this).find("option:selected").attr('value'),
            dataType: 'json',
            success: function(response, textStatus, jqXHR) {
                $("#catlist").html(response.catlist);
            },
            error: function (xhr, textStatus, errorThrown) {
                $("#catlist").html(xhr.responseText);
            }
        });​
    });
});

以下是在ajax.php中执行的PHP代码:

if(isset($_POST['taglist'])){
    $catlist = '<select name="cat_id[]" size="5" multiple id="cat_id[]">';
    $catlist .= fillselecteditmultiple(0, 0, $_POST['taglist']);
    $catlist .= '</select>';

    echo json_encode(array("status"=>"success", "catlist" => $catlist));
}

fillselecteditmultiple()输出填充的选项,突出显示应该预先选择的选项。它工作正常,因为我在其他页面使用没有问题。为了确保它不是从函数本身抛出的错误,我甚至尝试更改函数以输出一个简单的$ catlist ='abc'字符串作为响应,仍然是相同的错误。

奇怪的是,Firebug会在javascript代码的最后两行抛出一个错误,就像你在附图中看到的那样:

Firebug error Source code on execution

导致'?'的原因是什么?出现在我的代码中?

4 个答案:

答案 0 :(得分:5)

只需检查您的编码。当你在一行的末尾看到“奇怪”的符号时,这可能主要是由编码问题引起的。

另外,常见建议:

  

当程序不知道如何表示unicode代码点时,它   在广场内打印一个问号(我想你已经看过了   之前),或者如果不能,一个简单的问号。意外   问号总是让开发人员怀疑编码。
(c)   AXEL

答案 1 :(得分:1)

您在javascript代码中发送此数据,

data: "tag=" + $(this).find("option:selected").attr('value')

但在php文件中你试图获得$ _POST ['taglist'],

变量名称不相同。

尝试更改数据:“taglist = ....”或$ _POST ['tag']。

答案 2 :(得分:1)

逐步调试代码。首先在else文件中放入ajax.php语句,并检查执行的位置。如果它进入if语句,则在每一行上放置die()函数以检查错误的来源。您的代码中可能出现的一个错误是您在ajax函数中发送了tag,并且您获得了$_POST['taglist']#taglist触发此ajax函数,其值未发布。仅发布您在data属性中提供的值。所以从

改变你的if条件

if(isset($_POST['taglist'])){

if(isset($_POST['tag'])){

这可能是原因。其他还不错。

答案 3 :(得分:0)

我想你可能在那边有空间..删除})之后的空格;