PHP AJAX JSON iteration

PHP AJAX JSON iteration

本文关键字:iteration JSON AJAX PHP      更新时间:2023-09-26

我正在熟悉ajax和json。

我的页面是addAccount.php里面,我有一个带有以下输入的表单:

 <input type="text" id="partnerCode" />
 <input type="button" id="pCodeSearch" value="Search" />

我有一个名为global的JavaScript页面.js它获取信息:

 $('input#pCodeSearch').on('click' , function()
 {
   var partnercode = $('input#partnerCode').val();
   if($.trim(partnercode) != '')
   {
     $.post('api/pCodeSearch.php', {partnercode: partnercode}, function(data)
     {
       $('div#partner-data').text(data);
     });
   }
 });

在上面的代码中,您将看到名为pCodeSearch.php的处理页面。 这是该代码:

 <?php
   if(isset($_POST['partnercode']) === true && empty($_POST['partnercode']) === false)
   {
     require "../include/database.php";
     require "../include/sessions.php";
     $search = "SELECT FULL_NAME, PARTNER_CODE from partner WHERE PARTNER_CODE = '"htmlentities(stripslashes(trim($_POST['partnercode'])))."'";
     $query = mysqli_query($dbc, $search); // $dbc is the connection string
     if(mysqli_num_rows($query) !== 0)
     {
       $out = array();
       while($row = $query->fetch_assoc())
       {
         $out[] = $row;
       }
       echo json_encode($out);
       mysqli_free_result($query);
     }
     else
     {
       echo 'Partner not found';
     }
   }
 ?>

使用上述所有代码,我可以显示在一个名为 #partner-data 的 DIV 标签中,正如您在上面的 JavaScript 代码中看到的那样。

但这是输出:

 [{"FULL_NAME":"PARTNER SA","PARTNER_CODE":"0000011182"}]

我想回应一下合作伙伴SA和0000011182。

我在我的JavaScript页面上尝试过这个:

 $.each(data, function(index, item)
 {
   $('<div>').
     attr('value', item.PARTNER_CODE).
     text(item.FULL_NAME).
     appendTo($('#partner-data'));
 });

但是没有任何东西返回屏幕。

如果从

php 返回的 json 字符串已被解析,您的循环似乎是正确的。

当您在第一次尝试中看到一个字符串时,我的猜测是它没有被解析,因此您需要:

var obj = JSON.parse(data);
$.each(obj, function(index, item) {
   $('<div>').
     attr('value', item.PARTNER_CODE).
     text(item.FULL_NAME).
     appendTo($('#partner-data'));
});

你也可以告诉 jquery 使用 $.post 的第 4 个参数自动执行此操作,以指定返回数据的类型:

$.post('api/pCodeSearch.php', {partnercode: partnercode}, function(data) {
    // your original $.each() loop
  }, 'json');
   ^^^^^^^^ here

而不是:

$('div#partner-data').text(data);

尝试:

 $('div#partner-data').text(data.d.["FULL_NAME"]);
我想

我会帮助你:),

首先为该 json 响应设置正确的内容类型,

所以这样写:

header('Contenty-Type: application/json');
echo json_encode($out);

然后在客户端响应处理功能将如下所示:-

$('input#pCodeSearch').on('click' , function()
 {
   var partnercode = $('input#partnerCode').val();
   if($.trim(partnercode) != '')
   {
     $.post('api/pCodeSearch.php', {partnercode: partnercode}, function(data)
     {
        // $('div#partner-data').text(data);
        // Because data value is json, and actually it is returing a array of objects
        // so
        for(i = 0; i < data.length; i++){
            currect_object = data[i];
            $('div#partner-data').append(current_object.FULL_NAME + ''t' + current_object.PARTNER_CODE + ''n');  
           // here you can also create an templete and can use that like 
           //  output_html = mytemplete(current_object.FULL_NAME, current_object.PARTER_CODE);
           //  $('div#partner-data').append(output_html);  
        } // __iterate to all array of objects
     }); // __post
   } // __if
 });

而且我认为你不需要每个jquery,可能有一些语法错误,因为我没有检查,:)谢谢