8

在 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 代码的最后 2 行抛出一个错误,就像您在所附图片中看到的那样:

萤火虫错误 执行时的源代码

什么可能导致“?” 出现在我的代码中?

4

4 回答 4

5

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

此外,常见的建议:

当一个程序不知道如何表示一个 unicode 代码点时,它会在一个正方形内打印一个问号(我想你以前看过这个),或者如果它不能,一个简单的问号。一个意想不到的问号总是让开发人员怀疑编码。
(c) 阿克塞尔

于 2012-12-05T09:31:39.550 回答
1

你在 javascript 代码中发送这些数据,

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

但在 php 文件中,您尝试获取 $_POST['taglist'],

变量名不一样。

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

于 2012-12-05T07:55:56.940 回答
1

一步一步调试代码。首先else在您的文件中添加一条语句ajax.php并检查执行的位置。如果它进入if语句,则die()在每一行上放置一个函数来检查错误来自哪里。您的代码中的一个可能错误是您正在发送tagajax 函数并且您正在获取$_POST['taglist']. #taglist触发这个ajax函数,它的值是不贴的。仅发布您在data属性中提供的值。所以改变你的 if 条件

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

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

这可能是原因。其他很好。

于 2012-12-05T07:56:20.997 回答
0

我想你那里可能有一个空格..删除 }) 之后的空格;​</p>

于 2012-12-05T07:47:53.303 回答