【问题标题】:passing javascript object array to ajax将javascript对象数组传递给ajax
【发布时间】:2015-03-01 08:38:38
【问题描述】:

这是我提交表单的简单代码。我想通过ajax在数据库中插入表数据值。但它不会控制控制器。

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

 var TableData = new Array();
 $('#cart_details tr').each(function(row, tr){

 TableData[row]={
    "productname" : $(tr).find('td:eq(0)').text()
    , "quantity" :$(tr).find('td:eq(1)').text()
    , "unit" : $(tr).find('td:eq(2)').text()
    , "unit_rate" : $(tr).find('td:eq(3)').text()
  }

   });


TableData.shift();

//TableData = $.toJSON(TableData);
var TableData = JSON.stringify(TableData);

alert(TableData);
var followurl='<?php echo base_url()."index.php/purchase/save_product";?>';

$.ajax({
   type: "POST",                     
   url:followurl,                                                 
   data: TableData,
   datatype : "json",

   cache: false,
   success: function (data) {
     alert("dsad"+data);
   }
   });

  });

当我对 tabledata 数组进行字符串化时,输出是这样的..

  [{"productname":"Copper Sulphate","quantity":"1","unit":"1","unit_rate":"100"},
  {"productname":"Hypta Hydrate","quantity":"1","unit":"1","unit_rate":"100"}]

我的问题是为什么它不去控制器?这是因为数组对象还是其他原因?

Tabledata 是 javascript 对象数组。我说的对吗?

【问题讨论】:

  • echo followurl 并检查它...
  • 已经检查过了..它是正确的
  • 你的错误是什么?你在php端检查过吗?没事吧?
  • 它不会去控制器那么我如何检查 php 端
  • 处理表单的 PHP 代码是什么样的?

标签: php jquery ajax


【解决方案1】:

使用

$.ajax({

而不是

$.post({

使用此代码

$.ajax({
   type: "POST",                     
   url:followurl,                                                 
   data: {TableData : TableData},
   cache: false,
   success: function (data) {
     alert("dsad"+data);
   }
   });

查看文档jquery.post

$.post 的语法是

$(selector).post(URL,data,function(data,status,xhr),dataType)

你不必定义类型,

但在这里您使用的是$.ajax$.post 混合

这是$.ajax 函数语法

$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

所以将$.post 更改为$.ajax 并尝试

【讨论】:

  • 据我记忆,两者都会做同样的事情,我在等你的解释
【解决方案2】:

正如您在documentation 中看到的那样,您可以将对象传递给data。我认为如果您采用这种方法,您会让事情变得更容易和更简单。

...
//TableData = $.toJSON(TableData); NO!!!
//var TableData = JSON.stringify(TableData); NO!!!

//alert(TableData);
var followurl='<?php echo base_url()."index.php/purchase/save_product";?>';

$.ajax({
   type: "POST",                     
   url:followurl,                                                 
   data: { 
    dataTable: TableData
   },
   datatype : "json",
   cache: false,
   success: function (data) {
     alert(data);
   }
   });

});

index.php/purchase/save_product 的非常简单的示例(没有验证或任何类似的东西)

$data = $_POST["dataTable"];
echo $data[0]["productname"];// Sending back the productName of the first element received.
die();

如您所见,如果您采用这种方法,您可以非常轻松地访问 index.php/purchase/save_product 文件中的数据。

希望对你有帮助。

【讨论】:

    【解决方案3】:

    您好,您似乎正在使用一些 CMS 或框架。您能否告诉我们您使用的是哪个框架或 CMS。然后我就可以解决这个问题了。看起来您正在使用 Code Ignitor。如果是这样,那么我希望这会对你有所帮助

    $.post( "<?php echo base_url();?>index.php/purchase/save_product", function(data) {
      alert( "success" );
    }, 'html') // here specify the datatype
    .fail(function() {
      alert( "error" );
    })
    

    在您的情况下,您的 ajax 调用必须看起来像

    var followurl="<?php echo base_url();?>index.php/purchase/save_product";
    
    $.ajax({
       type: "POST",                     
       url:followurl,                                                 
       data: TableData,
       datatype : "json",
    
       cache: false,
       success: function (data) {
         alert("dsad"+data);
       }
       });
    
      });
    

    错误似乎在您的followUrl中,请尝试在我的代码中使用它

    【讨论】:

      猜你喜欢
      • 2017-07-21
      • 1970-01-01
      • 2016-07-11
      • 2017-10-07
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 2012-05-27
      相关资源
      最近更新 更多