ajax jquery onclick Uncaught SyntaxError

时间:2013-07-09 10:39:57

标签: php jquery ajax

我有一个使用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);

这很好。

现在我想做同样的事情,但在第二个元素上使用onclick事件:

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

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

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

我对为什么它可以用于onchange事件而没有onclick事件感到有点困惑,有什么区别?我是jquery / ajax的新手。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

请试一试。

答案 2 :(得分:0)

看起来你的错误是jQuery尝试解析PHP的HTML输出,这可能意味着你的后端会引发错误,可能是因为发布了错误的数据。

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

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