在JQuery

时间:2016-06-28 09:21:44

标签: jquery ajax

我有以下问题。我想找到并替换我通过AJAX获取的特定字符串。

代码:

JQuery的:

if(!countflag) {
    $('.panel-body > p').each(function() {
        var content = $(this).find("span").html();

        $.ajax({ 
            url: '/vacatures.php',
            data: {company: content},
            type: 'post',
            success: function(output) {

                var text = $(this).find("span").text();
                $(this).text(text.replace(content, output));

            }
        });


        if(content) {
            countflag = true;
        }
    });
}

在HTML中显示公司ID(例如c88)。这需要找到并替换为公司的实际名称。

ID位于span个标记内。我认为这样可以更容易地找到并替换ID。

AJAX向vacatures.php发送一个电话,该电话会发回与.panel-body > p中显示的ID对应的公司名称。

此时我仍然坚持如何通过公司名称成功查找和替换ID。

更新(HTML代码 - 部分):

HTML Code

2 个答案:

答案 0 :(得分:1)

您有关闭问题... this内的success callbackthis的{​​{1}}不同...您需要查看一下关于闭包在javascript中的工作原理:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

顺便说一句,为了快速修复,您需要保存第一个each callback引用:

this

注意:变量$('.panel-body > p').each(function() { // keep a memory reference of this var self = this; var item = $(self); var content = item.find("span").html(); $.ajax({ url: '/vacatures.php', data: {company: content}, type: 'post', success: function(output) { var text = item.find("span").text(); // the following expression cannot work because text isn't defined item.text(text.replace(content, output)); } }); });似乎没有定义;通常,代码需要重构。

答案 1 :(得分:-1)

如果有效,请告诉我

if(!countflag) {
    $('.panel-body > p').each(function() {
        var content = $(this).find("span").html();

        $.ajax({ 
            url: '/vacatures.php',
            data: {company: content},
            type: 'post',
            success: function(output) {

               $(this).find("span").html(output)


            }
        });


        if(content) {
            countflag = true;
        }
    });
}