【问题标题】:Post JSON object to php using Ajax使用 Ajax 将 JSON 对象发布到 php
【发布时间】:2017-06-06 02:24:43
【问题描述】:

我通过从下拉列表中选择选项来动态添加表行,然后我尝试使用 ajax 作为 json 格式的数组将 html 表行发送到 php 函数。但是,当我提交多行时,php 函数不会打印控制台日志中的所有行。我得到了一次或两次所需的输出。我想我在 php 函数中遗漏了一些东西。请检查一次。如果需要有关代码的更多信息,请告诉我,我会更新。

Javascript:

function storeClgValues() {
  var CollegeData= new Array();
  $('#collegetable tr').each(function(row, tr){
    CollegeData[row]={
        "college" : $(tr).find('td:eq(0)').text()
    }
  }); 
  CollegeData.shift();
  return CollegeData;

}

$('#submit').click(function() { 

 CollegeData=storeClgValues();
 CollegeData=$.toJSON(CollegeData);                     
 $.ajax({
       type:"POST",
       url: '<?php echo base_url();?>ajaxController/insertcollege',
       data: "CollegeData=" + CollegeData,
       success: function(msg) {
          console.log(CollegeData);
          console.log(msg);             
       }
  });

});

AjaxController 类中的 PHP 函数:

 public function insertcollege()
 {   
    $data=array();
    $data=stripcslashes($_POST['CollegeData']);
    $data=json_decode($data, TRUE);
    //echo $data[0]['college'].'<br>';
    //echo $data[1]['college'].'<br>';
    if (is_array($data) || is_object($data))
    {
        foreach ($data as $key => $item) {
            echo $item['college'].'<br>';
        }
    }
 }

三次尝试在控制台输出:

[{"college":"College of Agriculture"}]
College of Agriculture

[{"college":"College of Agriculture"},{"college":"College of Business"}]
College of Agriculture 
College of Business

[{"college":"College of Agriculture"},{"college":"College of Business"}, {"college":"College of Comm & Educati"}]
<!--nothing gets printed-->

【问题讨论】:

  • 选择多行与选择单行相比,$data=json_decode($data, TRUE); 之后的 $data 的 print_r 或 var_dump 是什么样的?
  • 另外,当您选择多行时,$_POST 的 print_r 会是什么样子?
  • 这真的很奇怪。我不知道是什么导致了问题。但有时我得到输出,有时我没有得到响应。像这样打印的 $data 上的 Print_r。数组([0] => 数组([college] => 农学院)[1] => 数组([college] => 商学院))
  • 您的页面上是否有多个 id="submit" 的元素?
  • 或多行 id="collegetable"?还认为 Ajax 帖子可能在 storClgValues 完成它需要做的事情之前发生。

标签: php jquery json ajax codeigniter


【解决方案1】:

试试这样...

<?php
$json = '[{"college":"College of Agriculture"},{"college":"College of Business"}, {"college":"College of Comm & Educati"}]';
$data = json_decode($json,TRUE);
//print_r($data);
if (is_array($data) || is_object($data))
    {
        foreach ($data as $key => $item) {
            $output[]=$item['college'].'<br>';
        }
    }
echo json_encode($output);

?>

<?php
$json = '[{"college":"College of Agriculture"},{"college":"College of Business"}, {"college":"College of Comm & Educati"}]';
$data = json_decode($json,TRUE);
//print_r($data);
if (is_array($data) || is_object($data))
{
    foreach ($data as $key => $item) {
        foreach($item as $value){
            $output[] = $value."</br>";
        }
    }
}   
echo json_encode($output);
?>

【讨论】:

  • 感谢您的回答。有时我得到输出,有时我没有。不知道是什么原因造成的,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
  • 2023-03-17
  • 2015-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多