2012-07-26 73 views
0

我有一个jQuery的小问题 - 在jquery ui确认对话框中,我有2个输入: 第一 - 隐藏与精确值=“” 第二 - 输入文本 - 这里是问题。jquery不采取val()

当我点击“确定”脚本发送给我只有第一个值,第二个是空的。但是当我写入值=“123”时,有两个正在发送。

HTML:

<input type="text" value="" class="MyIn" id="MyIn" name="MyIn" > 
<input type="hidden" value="<?=$r['order_id'];?>" class="orderid" id="orderid" > 

的JavaScript:

$("a.opener").click(function (e) { 
     $("#dialog-message").dialog({ 

      buttons: { 
       Ok: function() { 
        var sendNumber = $("input#MyIn").val(); 
        var orderid = $("input#orderid").val(); 

        var dataString = 'orderid=' + orderid + '&sendNumber=' + sendNumber; 

        $.ajax({ 
         type: "POST", 
         url: "moduls/send.php", 
         data: dataString, 
         success: function() { 
          $("#dialog-message").dialog("close"); 
         } 
        }); 
        return false; 

       } 
      } 
     }); 
    }); 
+1

这将泄漏在IE中的内存。在页面加载或首次使用时创建一次对话框,然后通过链接点击重新打开/关闭对话框。 – asawyer 2012-07-26 18:27:57

+0

你的意思是说在send.php中,$ _POST ['orderid']的值是否为空?还是只是空白? – Leon 2012-07-26 18:37:21

+0

输入#MyIn为空 - 我在Firebug中看到sendNumber的Post参数为null。 – 2012-07-26 18:47:22

回答

0

您当前的jQuery代码应该是工作作为隐藏输入元素的值的refence是有效的。

演示:http://jsfiddle.net/3qpV4/

尝试提醒值,以确保它被正确设置。如果不是,那么你知道问题出在你的PHP变量扩展中。如果确实提醒,那么问题出在您的PHP文件send.php

+0

send.php是没有问题的。 输入#MyIn为空 - 我在Firebug中看到sendNumber的Post参数为null。 – 2012-07-26 18:55:14

+0

当你试图通过它时,你是否在该输入元素中有一个值? – RobB 2012-07-26 19:00:15

+0

是的我有价值 – 2012-07-26 19:02:49

1

它可能没有太大的差别,但也可以是很好的做法,通过AJAX发送数据时,包括数据类型,如:

$.ajax({ 
    type: "POST", 
    url: "moduls/send.php", 
    data: dataString, 
    dataType: 'text', 
    success: function() { 
    $("#dialog-message").dialog("close"); 
    } 
}); 
+0

如果它默认为'文本'什么意思? – Fresheyeball 2012-07-26 18:45:22

+0

因为没有它,像你这样的人忘了把它放在:)如果你习惯于一直使用它,你不会。 – TheCarver 2012-07-26 18:46:35

+0

我忘了,因为我永远不会使用$ .ajax我通常使用$ .post $ .get $ .getJSON等。很少需要哪种数据类型。 – Fresheyeball 2012-07-26 18:47:38

1

我非常怀疑<?=$r['order_id'];?>将返回一个空串。如果是这种情况,它将不会被发送。另外dataString不是在jQuery中传递参数的首选方式。贝娄与这种情况下捕获:

$("a.opener").click(function (e) { 
    $("#dialog-message").dialog({ 

     buttons: { 
      Ok: function() { 

       // if sendNumber fails or evaluates to false, 
       // it will be replaced with 'null', insuring its sent anyway 
       // and you can trap on the serverside. 
       var sendNumber = $("input#MyIn").val() || 'null'; 
       var orderid = $("input#orderid").val(); 

       var postData = { orderid : orderid, sendNumber : sendNumber}; 

       //shorthand of extra niceness 
       $.post('moduls/send.php', postData, function(){ 
        $("#dialog-message").dialog("close"); 
       }); 
       return false; 

      } 
     } 
    }); 
}); 
+2

认为你需要** DATATYPE:JSON; **在那里不是你。没有这一行,它默认为TEXT。 – TheCarver 2012-07-26 18:38:06

+0

@PaparazzoKid你是对的,我只是习惯于简写。我已经更新了我的答案。 – Fresheyeball 2012-07-26 18:43:51

+0

我让你的代码和答案是: 输入#MyIn为空 - 我在Firebug中看到sendNumber的Post参数为null。 – 2012-07-26 18:47:42