【问题标题】:not able to carry the form values through post method无法通过 post 方法携带表单值
【发布时间】:2015-12-14 01:43:31
【问题描述】:

有一个表单,用户输入一个数字,然后根据应用在数字上的条件,显示一个地址列表。我想存储通过 AJAX 返回的数据。页面上有表单的代码:

index.php

<script>
    $(document).ready(function() {
        $("#phone").keyup(function() {  
            var number = $("#phone").val();
            $.ajax({
                url: "t_fetchaddr.php",
                type: 'POST',
                data: 'number='+number,
                cache: false,
                }).done(function(html) { 
                    $('#results').html(html);
                });
            });
        });

<script>

<form action="insert_temp.php" method="POST">
    <input type="text" name="phoneno" id="phone" value=""  />
    <div id="results"></div>
    <button class="button btn btn-primary btn-large" type="submit" name="submit" value="submit">Submit</button>
</form>

t_fetchaddr.php 页面上的代码

$val =  $_REQUEST['number']; 
$sql2 = "SELECT * FROM user_address where number='".$val."' ";
$result2 = mysqli_query($con, $sql2);
if (mysqli_num_rows($result2) > 0) 
{ ?>
    <div class="span6" >
        <div class="span3">
            <? while($row2 = mysqli_fetch_assoc($result2)) 
            { ?>
                <input type="radio" name="old_address" value="<? echo $row2['address']; ?>" ><? echo $row2['address']; ?><br>
            <? } ?>
        </div>
    </div>
<? } ?> 

insert_temp.php 页面上的代码

$old_address = mysqli_real_escape_string($con, $_POST['old_address']);
echo $old_address;

在通过数字显示地址之前一切正常,但是当我提交表单时它不会进入后端。我尝试echo $old_address,但一无所获。 表单内索引页面中的其他输入值将被后端但是value that is being fetched from t_fetchaddr.php page is not getting carried,谁能告诉我哪里出错了

【问题讨论】:

  • 我看到的第一个错误是data: 'number='+number, 应该是data: {number:number},
  • @BasvanStein 这不是问题;发送字符串很好 - 无论如何,对象都会被 jQuery 转换为查询字符串。
  • 您是否检查了控制台以查看请求是否正在发送?
  • @Rory McCrossan 值被发送到 ajax,从那里我得到了正确的响应,但是在单击提交按钮后我没有得到任何响应,但是如果我使用任何其他输入文本直接放在主页面,被带到insert_temp.php页面
  • 谢谢@Rory McCrossan,我不知道,虽然我仍然觉得它很丑。

标签: php jquery mysql ajax forms


【解决方案1】:

试试这个并观察你的控制台:

$(document).ready(function() {
    $("#phone").keyup(function() {  
        var number = $(this).val();
        $.ajax({
            url: "t_fetchaddr.php",
            type: 'POST',
            data: {number:number},
            cache: false,
            success : function(html) { 
                $('#results').html(html);
            },
            error : function(err){
                console.log(err);
            }
        });
    });
});

【讨论】:

  • 我在控制台中没有任何错误,一切正常,但仍然没有保存值
【解决方案2】:
<script>
    $(document).ready(function()
    {
        $("#phone").keyup(function()
        {
            var number = $("#phone").val();
            $.ajax({
                url: "t_fetchaddr.php",
                type: 'POST',
                data: {number :number}, //modified
                cache: false,
                success:function(html)
                {
                    $('#results').html(html);
                }
            });
        });
    });
</script>//Missing closing

<form action="insert_temp.php" method="POST">
    <input type="text" name="phoneno" id="phone" value=""  />
    <div id="results"></div>
    <button class="button btn btn-primary btn-large" type="submit" name="submit" value="submit" >Submit</button>
</form>

在php中

$val =  $_POST['phoneno'];
$sql2 = "SELECT * FROM user_address where number='".$val."' ";
$result2 = mysqli_query($con, $sql2);
if (mysqli_num_rows($result2) > 0)
{ ?>
    <div class="span6" >
        <div class="span3">
            <? while($row2 = mysqli_fetch_assoc($result2))
            { ?>
                <input type="radio" name="old_address" value="<? echo $row2['address']; ?>" ><? echo $row2['address']; ?><br>
            <? } ?>
        </div>
    </div>
<? } ?> 

注意:

  1. 缺少结束标签&lt;/script&gt;
  2. 这条线改了data: 'number='+number,

【讨论】:

  • 试过了还是不行,需要把old_address带到后台
  • old_address 是通过 t_fetchaddr.php 页面调用的输入值的名称,代码为
【解决方案3】:

在 fetchaddr.php 上试试这个代码 我刚刚删除了 php 之间的标签。

<?
$val =  $_REQUEST['number']; 
$sql2 = "SELECT * FROM user_address where number='".$val."' ";
$result2 = mysqli_query($con, $sql2);
if (mysqli_num_rows($result2) > 0) { 
    echo '<div class="span6" >
        <div class="span3">';
            while($row2 = mysqli_fetch_assoc($result2)) 
            { 
               echo '<input type="radio" name="old_address" value="'.$row2['address'].'" >'.$row2['address'].'<br>';
             } 
        echo '</div>
    </div>';
} ?> 

希望这能解决您的问题。

【讨论】:

  • 是的,它们已启用,除了其他值将发送到后端之外,问题只是
猜你喜欢
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
相关资源
最近更新 更多