【问题标题】:Simple ajax call not working, but response is ok简单的 ajax 调用不起作用,但响应正常
【发布时间】:2013-12-02 00:32:10
【问题描述】:

我在使用 jQuery 和 Ajax 的 3 或 4 个小时后苦苦挣扎。我有一个简单的 ajax 调用,它必须替换节点内的 HTML。

HTML 是这样的:

<ul class="nav navbar-nav pull-right" id="notify">
   <!-- BEGIN NOTIFICATION DROPDOWN -->
   <li></li>
</ul>

我的 jQuery ajax 调用是这样的

$(document).on("click", ".formato", function (e) {
    e.preventDefault();
    var a = $(this).data('format');
    var b = $(this).data('content');
    $.ajax({
        url: '/magazine/article',
        type: 'POST',
        data: {
            format: a,
            content: b,
        },
        success: function (data) {
            console.log(data);
            $('#notify').replaceWith(data);
        },
        error: function () {
            //if fails      
        }
    });
});

我检查 Chrome 调试器的 XHR 响应并且响应正常:我的 Sinatra 应用程序返回给我 &lt;li&gt; 元素以放置在 &lt;ul&gt; 中。但是什么也没发生,console.log 也不起作用。

我在 js 控制台中没有任何错误。

你知道发生了什么吗?

【问题讨论】:

  • 您是否记录了错误回调是偶然返回的?
  • 我记录了错误,错误是“Uncaught SyntaxError: Unexpected token
  • 好的,现在我明白了。 jQuery 认为我的有效载荷是 json,并尝试解析它。但是是 HTMLO 所以我必须声明数据类型!!!

标签: jquery ajax sinatra


【解决方案1】:

不要使用replaceWith,因为它会用你得到的响应(在这种情况下为li)替换你的ul元素,这是不正确的,请改用html()函数:

$('#notify').html(data)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    相关资源
    最近更新 更多