【问题标题】:ajax query onclick Uncaught SyntaxErrorajax jquery onclick Uncaught SyntaxError
【发布时间】:2013-07-09 10:39:57
【问题描述】:

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

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

感谢您的帮助。

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

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

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

    【讨论】:

    • 我现在感觉很笨,我找了大概 3 个小时:
    【解决方案2】:
    $("th").click(function(){
            change_table($('#mySelect')[0].value);
        });
    

    请试试这个。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-12
        • 2015-01-29
        • 1970-01-01
        • 1970-01-01
        • 2016-10-30
        • 1970-01-01
        • 2014-03-09
        • 1970-01-01
        相关资源
        最近更新 更多