在JQuery中使用标签
我试图使用在JQuery中使用标签,jquery,Jquery,我试图使用在jqueryui对话框对象上显示一些文本。但它似乎总是失去价值。下面是我设置值的代码段: function populateDialog(intMeterID) { $.ajax( { type: "POST", url: "/WS.asmx/GetMeterSettingsByMeterID",
在jqueryui对话框对象上显示一些文本。但它似乎总是失去价值。下面是我设置值的代码段:
function populateDialog(intMeterID) {
$.ajax(
{
type: "POST",
url: "/WS.asmx/GetMeterSettingsByMeterID",
data: "{intMeterID:" + intMeterID + "}",
async: false,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(msg) {
var strMeterName = msg.d.MeterName;
$("label[for='lblMeterID']").text(intMeterID);
$("label[for='lblMeterName']").text(strMeterName);
点击一个按钮,我试图从标签上取值,但它是空的。但是,msg.d.MeterName确实包含数据
function saveMeterDetails() {
var intMeterID = $("label[for='lblMeterID']").text();
var strMeterName = $("label[for='lblMeterName']").text();
html:
[...]
知道为什么吗?我认为这实际上与标签本身无关。我认为在“成功”回调时intMeterID是空的。这就是为什么如果你去掉那条线它会起作用 “success:function(){blah}”的实际操作是定义一个新函数,该函数将在请求成功时调用。当时还不知道“intMeterID” 如果您真的需要,您可以将其作为一个全局变量,或者使ajax调用阻塞,或者(我最喜欢的)将变量服务器端添加到ajax结果中
编辑:嗯,没关系,我刚读到你已经找到了答案。显然我错了:)我认为这是一个范围问题。当成功回调被称为“intMeterID”时,该范围中实际上不存在。即使你在最初的通话中通过了它。您需要将其设置为全局变量,或者将其作为ajax调用中的数据传回
代码现在可以工作了,因为您删除了将未定义文本设置到标签的错误调用 您还应该发布相应的HTML表单以方便调试…尝试使用
value()
而不是text()
?这是我的HTML:奇怪的是,仪表名称会显示出来,但只有当我在设置它的位置之前删除行时才会显示:$(“标签”)[for='lblMeterID']”。文本(intMeterID);我找到了答案,虽然我不知道为什么它会起作用。我自己把仪表ID标签排成一行,就像这样:不,实际上我认为你是对的;-),在tMeterID未定义并中断函数的剩余部分
<div id="dialog-form">
<div style="height: 200px; min-height: 109px; width: auto;" id="dialog">
<table>
<tr>
<td>
<label style="display:none;" for="lblMeterID" />
<label style="font-weight:bold;" for="lblMeterName" />
</td>
</tr>
<tr></tr>
<tr></tr>
[...]