在JQuery中使用标签

时间:2011-02-08 09:24:40

标签: jquery

我正在尝试使用<label>在JQuery UI Dialog对象上显示一些文本。但似乎总是失去价值。以下是我设置值的代码段:

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:

<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>
            [...]

任何想法为什么?

2 个答案:

答案 0 :(得分:1)

我认为这是一个范围问题。当成功回调被称为'intMeterID'时,该范围内并不存在。即使您在初始通话期间通过了它。您需要将其作为全局变量,或者将其作为来自ajax调用的数据传回。

代码现在可以正常工作,因为您删除了将未定义文本设置为标签的错误调用。

答案 1 :(得分:0)

我认为这实际上与标签本身无关。我认为intMeterID在'success'回调时是空的。这就是为什么它删除该行后它可以工作的原因。

你实际上在做什么'success:function(){blah}'定义了一个新函数,只要请求成功,就会调用它。那时'intMeterID'未知。

如果你真的需要它,或者让ajax调用阻塞或(我最喜欢的)将变量服务器端添加到你的ajax结果中,你可以使它成为一个全局变量。

编辑:嗯,没关系,我刚读过你已经找到了答案。显然我错了:)