用户更改类别时自动填充表单时使用 JSON

Posted

技术标签:

【中文标题】用户更改类别时自动填充表单时使用 JSON【英文标题】:JSON usage while autofill the form when user changes the category 【发布时间】:2013-09-05 15:57:42 【问题描述】:

当用户更改类别(选择标签更改)时,我正在尝试用数据库信息填充表单。这是我的代码。

<form onsubmit='return false'>
select<select id="select">
       <option value='5'>5</option>
       <option value='6'>6</option>
       <option value='7'>7</option>
       <option value='8'>8</option>
       <option value='9'>9</option>
       <option value='10'>10</option>
       </select>
       fname<input type="text" id='fname' name="fname" /><br />
       lname<input type="text" id='lname' name="lname" /><br />
</form>


<script type="text/javascript">

$(document).ready(function()
    $("#select").change(function()
        selectid = $(this).val();
          // using post method to get firstname   
                     $.post("retreive.php", selectid:selectid, function(result)
                            $("#fname").val();
                            //again using post method here get lastname
                           $.post("one.php", selectid:selectid, function(result)
                             $("#lname").val();

                           );
                      );   
     );    
);

检索.php

<?php
//for firstname
if( isset($_POST['selectid']) )
     //using this selectid i'm getting firstname
     echo $firstname;
     exit();


//again for last name
if( isset($_POST['selectid']) )
     //using this selectid i'm getting firstname
     echo $lastname;
     exit();

?>

最后,这个过程会自动填写表单字段,即;名字和姓氏。我知道这是愚蠢和耗时的程序。我听说这项工作很容易完成,不需要让我们的 php 承担所有使用 JSON 概念的负担。我试图理解但无法理解。我希望你们能理解我面临的问题,希望有一个解决方案。提前致谢!

【问题讨论】:

【参考方案1】:

您收到了 ajax 请求,但对结果数据什么都不做。 试试这个

$(document).ready(function()
    $("#select").change(function()
       var selectid = $(this).val();
          // using post method to get firstname   
                     $.post("retreive.php", selectid:selectid, function(result)
                            $("#fname").val(result);
                            //again using post method here get lastname
                           $.post("one.php", selectid:selectid, function(result)
                             $("#lname").val(result);

                           );
                      );   
     );    
);

您不需要两个 ajax 请求 - 您可以发出一个请求,并获取 json 数据。 了解jquery ajax method 和 json 格式

$(function()
 $('#select').change(function()
 var selectid = $(this).val();
 $.ajax(
  url: 'retreive.php',
  data: selectid: selectid,
  type: 'POST',
  dataType: 'JSON',
  success: function(data)
  
    $("#fname").val(result.fname);
    $("#lname").val(result.lname);
  
);
);
);

还有php

<?php
 if (isset($_POST['selectid'])) 
  echo json_encode(array('fname' => $fname, 'lname' => $lname));
  exit;
 

如果出现问题,当您发出 ajax 请求时,打开控制台并查找错误。如果您没有错误,请访问网络并查看返回给您的服务器。

【讨论】:

谢谢@Andery Vorobyev,使用该selectid 值我可以检索fname、lname,并且我将保存在一个数组中,如您在php 文件中显示的那样。但是,如果我检索到包含 20 到 30 个字段的记录怎么办?我应该遵循相同的过程,即; array('fname'=>$fname, 'lname'=>$lname, 'address'=>$adress, 'mob'=>$mob,....... 最高 20/30...'city '=>$city, ). in php echo json_encode(array(array('fname' => $fname, 'lname' => $lname), array('fname' => $fname, 'lname' => $ lname)));在 javascript 中,你得到对象数组,你可以根据需要展示它 只是成功回调参数'data'需要改成'result'。现在意识到 JSON 概念的重要性......非常感谢@Andrey Vorobyev,您解决了这个问题。 我正在尝试使用'selectid'从mysql'users'表中获取数据,使用mysql_fetch_array()我得到fname,lname之后我回显如下。但什么也没发生。有没有其他方法来处理 sql 数据或者我在回显时是否犯了任何错误? echo json_encode(array('fname'=>$fname, 'lname'=>$lname)); 你在 mysql 数据库和连接中使用什么编码? JSON 数据必须是 UTF-8 并且请关闭问题 =)

以上是关于用户更改类别时自动填充表单时使用 JSON的主要内容,如果未能解决你的问题,请参考以下文章

使用Springboot进行表单管理 - 当用户选择预先输入时自动填充表单

键入自动填充表单

有没有办法在用户键入时使用第一个 Google Location 返回值自动填充/文本完成表单字段?

通过用户表单替换自动填充的文本

通过用户表单替换自动填充的文本

Angular 2 - 浏览器自动填充时表单无效