【问题标题】:Ajax response appending dataAjax 响应附加数据
【发布时间】:2013-09-21 05:38:00
【问题描述】:

由于某种原因,以下脚本抛出错误“错误:语法错误,无法识别的表达式:cmetscontainer_(post_id)”.. 有人知道为什么吗?是语法错误吗?

 $(document).ready(function() {
var msg = '.text-holder';

$('.time').timeago();
$('.text-holder').autosize();

$('#post_comment').click(function() {
    $(msg).focus();
});

$('.text-holder').keypress(function(e) {
    var postID = this.id.replace('post_', '');
    if(e.which == 13) {
        var val = $(msg).val();

        $.ajax({
            url: 'auth/classes/comments.php',
            type: 'GET',
            data: 'token=<?php echo $token; ?>&msg='+escape(val),
            success: function(data) {
                $(msg).val('');
                $(msg).css('height','14px');
                $('.commentscontainer_'+postID).append(data);
                $('.time').timeago();
            }
        });
    }
});

这是非常漂亮的 html

<div class="commentscontainer_['post_id']"></div>

我有另一个脚本..它与这个冲突吗?

    $(document).ready(function(){
        $(".comment_box").hide();

        $('.slider').on('click',function(){
            var flag   = $(this).data('flag'),
                postID = this.id.replace('post_', '');

            $('#' + postID).slideToggle();

            if (!flag) {
                $.ajax({
                    url : 'auth/classes/comments.php',
                    data: {post_id: postID}
                }).done(function(data) {
                    $('.commentscontainer_'+postID).replaceWith(data);
                    $('.time').timeago();
                });
            }
            $(this).data('flag', !flag)
        });
    });

【问题讨论】:

  • 消息和令牌在萤火虫上得到很好的 ajaxed .. 响应后抛出错误
  • 什么是commentscontainer,一个类,id?
  • 是的,它是一个包含 cmets 的类 id..
  • 你忘记了前面的. :)
  • 如果你去掉那一行,它会起作用吗?

标签: jquery ajax append


【解决方案1】:

您必须在选择器中转义某些字符(如 [, ]),否则 jQuery 会抛出错误。

var postID = this.id.replace('post_', '');
postID = postID.replace(/\[/g,'\\[');
postID = postID.replace(/\]/g,'\\]');

【讨论】:

    【解决方案2】:

    您还需要去掉 postID 中的引号:

    var postID = this.id.replace('post_', '');
    postID = postID.replace(/['"]/g,'');
    

    【讨论】:

    • 我也注意到了.. 更正后仍然抛出同样的错误
    • 嗨,.. 它不会抛出那个错误.. 但它不会附加它.. 没有任何反应
    • 那么data 是什么?请运行console.log(data) 并评论输出。 @user2668436
    • 响应很好..它没有被附加
    • 嗨..还有另一个脚本..如果我删除它..它会被附加..我将另一个脚本发布到问题中..你能看看吗?
    猜你喜欢
    • 1970-01-01
    • 2016-07-06
    • 2017-05-11
    • 2020-02-29
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    相关资源
    最近更新 更多