1

我有一个使用 javascript 事件“onchange”的工作代码:

<select id="mySelect" onchange="change_table(this)">

jQuery:

unction change_table(elem) {

var adressesInfo;

$.ajax({
    type: "POST",
    url: "test.php",        
    data: {id: elem.value},

    success: function(data){
        adressesInfo = jQuery.parseJSON(data);
    },

    async: false
});

和 php :

$data = array();
[...]
print json_encode($data);

这工作正常。

现在我想做完全相同的事情,但在第 th 元素上使用 onclick 事件:

$(function(){
    $("th").on('click', function(e){
        change_table($('#mySelect')[0].value);
    });
})

(这可能没有多大意义,但这只是为了示例)

当我这样做时,我得到了错误Uncaught SyntaxError: Unexpected token <

我有点困惑为什么它会与 onchange 事件和没有 onclick 事件一起工作,有什么区别?我对 jquery/ajax 有点陌生。

谢谢你的帮助。

4

3 回答 3

1

您的change_table函数需要一个可以从 ( data: {id: elem.value}) 中获取值的元素。因此,在第二种情况下,您应该mySelect直接提供:

$("th").on('click', function(e){
    change_table($('#mySelect')[0]);
});
于 2013-07-09T10:43:10.177 回答
0

看起来您的错误是 jQuery 试图从您的 PHP 解析 HTML 输出,这可能意味着您的后端正在引发错误,可能是由于发布了错误的数据。

您的原始change_table函数将一个元素作为其唯一参数,在您的最后一个示例中,您将已评估的字符串传递给它。也许这解释了为什么错误的数据会发送到您的服务器。

另外:没有必要在 jQuery 中显式解析 json。您可以dataType: 'json'在您的 ajax 设置中使用,反序列化的 json 将被传递给您的success处理程序。如果失败,您的error处理程序将改为触发。

于 2013-07-09T10:51:39.570 回答
0
$("th").click(function(){
        change_table($('#mySelect')[0].value);
    });

请试试这个。

于 2013-07-09T10:42:37.060 回答