我有一个标签,其中包含以下链接:
<label id="textlabel" > <a href="#" id="testlink">data</a> </label>
我正在尝试使用Ajax来更改标签文本,但它不起作用。
出于测试目的,它可以正常运行here,但它不适用于我的网页(网页是全新的,没有任何其他内容)。
$('#testlink').click(function(){
$('#testlabel').text("new data");
});
JavaScript的:
function myfunc(clicked_id) {
var label = document.getElementById(clicked_id).parentElement;
var params = "{'orderid':'" + clicked_id + "'}";
var fd = new FormData();
fd.append("orderid", params);
alert("test");
$("'#" + clicked_id + "'").click(function () {
$.ajax
({
url: 'Handler.ashx',
data: fd,
processData: false,
contentType: false,
type: 'POST',
success: function (result) {
$("'#"+label.id+"'").text(result);
}
})
});
}
更新:
以下ajax一般适用
<script type="text/javascript">
function myfunc(clicked_id) {
var params = "{'orderid':'" + clicked_id + "'}";
var label = document.getElementById(clicked_id).parentElement;
$("#"+label.id).click(function () {
$.ajax({
type: "POST",
url: "Handler.ashx",
data: clicked_id,
success: function (result) {
$("#" + label.id).text(result);
}
}); });
}
我花了很多时间来查明问题,现在我认为问题出现在自动生成的元素上。例如
<table>
<tr><td><label id="lbl" style="background-color:yellow">
<a href="#" onclick="myfunc(this.id)" id="00000">Label</a>
</label></td></tr>
@for(int i=0;i<4;i++)
{
<tr><td>
<label id="lbl+@i" style="background-color:yellow">
<a href="#" onclick="myfunc(this.id)" id="@i">Label</a>
</label></td></tr>
}
</table>
ajax仅更改第一个标签'文本,而不更改其他自动生成的链接和标签。 单击自动生成的链接时,以下部分不会运行
$("#"+label.id).click(function () {
$.ajax({
type: "POST",
url: "Handler.ashx",
data: clicked_id,
success: function (result) {
$("#" + label.id).text(result);
}
}); });
更新
最后我发现了什么问题。它是我使用的标签ID。更改为“_”后,他们都有“+”,我的应用程序现在工作正常。
感谢所有帮助过的人
答案 0 :(得分:4)
问题代码更改后更新
中有一个小故障
success: function (result) {
$("'#"+label.id+"'").text(result)
}
应该是
success: function (result) {
$("#"+label.id).text(result)
}
另外,要测试标签对象是否存在,您可以添加
success: function (result) {
console.log(label); // DON'T FORGET TO REMOVE THIS LINE LATER BEFORE DEPLOYING
$("#"+label.id).text(result)
}
也许是因为在您的测试功能中,您拼写错误标签的ID textlabel
为testlabel
in
$('#testlink').click(function(){
$('#testlabel').text("new data");
});
然后在您的真实代码中:
success: function (result) {
$('#label.id).text(result);
}
#label.id
是
'#textlabel'
答案 1 :(得分:1)
嘿如果您想更新包含链接的所有标签文本,请尝试使用此代码 我还更新了您的演示链接,请参阅
$('[id*="test"]').text("ddaadfa");
如果您使用的是ajax,则必须在成功块中使用此代码来更改链接文本
success: function (result) {
$('[id*="test"]').text("ddaadfa");
}