我有以下问题。我想找到并替换我通过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代码 - 部分):
答案 0 :(得分:1)
您有关闭问题... this
内的success callback
与this
的{{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;
}
});
}