Php 表单值在ajax加载后不提交

Php 表单值在ajax加载后不提交,php,jquery,html,Php,Jquery,Html,我这里有一张表格 在邮政编码模糊后,郊区正在加载带有某些选项的下拉列表 这是jquery代码 $(document).ready(function(){ $("#zip").on('blur',function(){ $.post("get_suburb_admin1.php",{zip:$(this).val()}, function(d){ $("#suburb_cnt").html(d); }); }); });

我这里有一张表格 在邮政编码模糊后,郊区正在加载带有某些选项的下拉列表

这是jquery代码

$(document).ready(function(){
    $("#zip").on('blur',function(){
        $.post("get_suburb_admin1.php",{zip:$(this).val()}, function(d){
            $("#suburb_cnt").html(d);
        });
    });

});
但是当在ajax加载之前提交表单时,它会变得很好。 但是当它在ajax加载后提交时,它并没有得到这个值。
请检查上面的url,解决方案对我很有帮助。

关于这一点,您的控制台怎么说?我相信问题可能是$this在$post中指的是窗口对象,而不是zip。还有几个其他的注意事项:

看起来您试图做的是发送zip具有的任何值,这是一个输入元素,指的是邮政编码,而不是郊区。 由于select将动态加载,因此旧的处理程序不再适用。但是,您可以委托,如下所示:

$(document).on('blur','#suburb',function() {
    //do whatever
});   
至于上下文问题,我相信$.post回调是在窗口上下文中调用的。请尝试以下方法来解决该问题:

$("#zip").on('blur',function(){
    var self = this;
    $.post("get_suburb_admin1.php",{zip:$(self).val()}, function(d){
        $("#suburb_cnt").html(d);
    });
});
总的来说,您的代码和您尝试执行的操作可能存在一些潜在的问题。我建议您搜索有关AJAX、JavaScript函数上下文和jQuery选择器的更多信息


旁注:您可能需要重新考虑如何使用php加载select,除非您有充分的理由承诺使用它。我自己测试网页时,从AJAX调用加载select有时需要10秒钟。

在表之前打开表单,在表之后关闭表单


现在我在firebugtab网上看到了通过提交发送的数据

第一次输入[name=suburb1]-正常。张贴所有需要的字段

第二步,用Ajax选择[name=suburb1]替换输入[name=suburb1]。你可以看到这个 选择存在于DOM中,请参见控制台中的。但它不会通过邮寄发送其他字段-好的。 我不知道为什么会这样

我找到了一个解决方案:

$("#frm input[type=submit]").submit(function(){
   // get value from "dynamic-ajax" select 
   var suburb = $("select[name=suburb1]").val();

   // adding hidden with same name & value 
   $('<input>').attr({
      type: 'hidden',
      name: 'suburb1',
      value: suburb,
   }).appendTo("#frm");
});

这就是AJAX调用后HTML的外观

表单已重写,并在打开后立即关闭。因此,当您提交时,没有要传递的输入

<body>
<form name="frm" id="frm" action="test1.php" method="post" 
      enctype="multipart/form-data"></form>
<tbody><tr>
            <td>Address :</td>
            <td><input name="address" value="" type="text"></td>
        </tr>

        <tr>
            <td>Suburb :</td>
            <td id="suburb_cnt"><select id="suburb" name="suburb1">
    <option value="ALEXANDRIA">ALEXANDRIA, New South Wales</option>
    <option value="BEACONSFIELD">BEACONSFIELD, New South Wales</option>
    <option value="EVELEIGH">EVELEIGH, New South Wales</option>
    </select></td>
        </tr>

        <tr>
            <td>Postcode :</td>
            <td><input name="zip" id="zip" value="" type="text"></td>
        </tr>

        <tr>
            <td>State :</td>
            <td id="state_cnt"><input name="state" id="state" value="" type="text"></td>
        </tr>
        <tr>
            <td></td>
            <td><input value="submit" name="submit" type="submit"></td>
        </tr>

为什么它会发送郊区的值,在$.post函数中发送的唯一值是zip的值?打开表前的表单并在表后关闭它。您是否尝试过返回JSON,然后手动添加郊区的子项?可能仅仅执行$el.html对于浏览器检测select元素是不够的。很抱歉,我尝试了这段代码,但遇到了相同的问题。。提交后未获取值。请查看url kindl。您也可以在此处查看控制台。。
<body>
<form name="frm" id="frm" action="test1.php" method="post" 
      enctype="multipart/form-data"></form>
<tbody><tr>
            <td>Address :</td>
            <td><input name="address" value="" type="text"></td>
        </tr>

        <tr>
            <td>Suburb :</td>
            <td id="suburb_cnt"><select id="suburb" name="suburb1">
    <option value="ALEXANDRIA">ALEXANDRIA, New South Wales</option>
    <option value="BEACONSFIELD">BEACONSFIELD, New South Wales</option>
    <option value="EVELEIGH">EVELEIGH, New South Wales</option>
    </select></td>
        </tr>

        <tr>
            <td>Postcode :</td>
            <td><input name="zip" id="zip" value="" type="text"></td>
        </tr>

        <tr>
            <td>State :</td>
            <td id="state_cnt"><input name="state" id="state" value="" type="text"></td>
        </tr>
        <tr>
            <td></td>
            <td><input value="submit" name="submit" type="submit"></td>
        </tr>