jQuery ajax不适用于生成的标记

时间:2017-05-01 14:11:04

标签: javascript jquery bootstrap-popover

我们的应用程序中有搜索功能,当用户输入内容时,结果将根据过滤器生成并显示在页面上。

以下是每个get()之后的动态结果:

keyup

以下是事件处理程序:

htmlResult = `
<li>
    <div>
        <img src='${user.avatar}' width='80' alt='${user.fullName}' />
    </div>
    <a tabindex='0'
        class ='btn2'
        data-html='true'
        data-toggle='popover'
        data-content="<div class='list-group'><a href='#' class='item' data-val1-value='0'>Val1</a></div>">add</a>
</li>
`;

此代码存在两个问题:

    点击$("[data-toggle=popover]").popover(); $(document).on('click', '.btn2', function(event) { event.preventDefault(); $(this).popover({ html: true }); }); $(document).on('click', '.item', function (event) { event.preventDefault(); const value1 = $(this).attr('data-val1-value'); const params = { value1: value1 }; $.ajax({ type: "POST", url: endPoint, dataType: 'json', contentType: 'application/json', data: JSON.stringify(params), success: (result) => { // refresh } }); }); 3次后,将显示
  • popover
  • jQuery ajax不会成功,它会在控制台上显示.item错误。

PS :此代码适用于未生成的标记。

任何想法?

2 个答案:

答案 0 :(得分:0)

a)确保你的网址是正确的,     1)更新您的服务器端功能,不接受任何仅用于测试的参数     2)用数据调用ajax:NULL     3)调试并查看它是否到达服务器端功能。

b)如果没有到达服务器端,请检查它是服务器端功能中的POST还是GET。 c)如果您确定正确调用了服务器端功能,则数据没有字符串。

这可能会有所帮助。

答案 1 :(得分:0)

对于popover,您必须重新启动每个附加到HTML的dinamyc内容。 对于Ajax 400,这是因为找不到路径路径的URL,请再次检查此请求的后端要求。