【问题标题】:How to send javascript array to php?如何将javascript数组发送到php?
【发布时间】:2016-08-22 08:49:53
【问题描述】:

我已经尝试了很多解决方案,但没有一个适合我。 所以我有一个 javascript 数组,我应该将它传递给 php 以将其上传到 mysql

此代码位于php 页面中,其中是可编辑的网格。如果在网格中按 Enter 键,它会创建一个新行,其中包含可编辑单元格的值,该值进入 var val=[],这应该通过 `php 进入 mysql

我尝试了两种传球方式,如下所示

我的代码:

<script type="text/javascript" >
    var dbs=0;
    var val=[];
    function myFunction(e) {
            if(e.keyCode == 13){
                var newId = (new Date()).valueOf();
                var value=gridbox.cells(1,0).getValue();
                gridbox.addRow(newId,value);                
                val.push(value);
                gridbox.cells(1,0).setValue('');
                gridbox.editCell(1,0);
                dbs=dbs+1;

            }
    }
    function upload(){
        var jsonString = JSON.stringify(val);
             /*$.ajax({
                type: "POST",
                url: "upload.php",
                data: {'data' : jsonString}, 
                cache: false,

                success: function(){
                    alert("OK");

                }
            });*/
        var jsonData = $.ajax({
                  url: "upload.php",
                  data: { 'data' : val},
                  dataType:"json", 
                      async: false
                  }).responseText;
        }
</script>

UPLOAD.PHP

它在数据库中创建新的空行,所以它运行,但 $data 是空的

//$data = json_decode(stripslashes($_GET['data']));
$data=$_GET['data'];

  // here i would like use foreach:
/*
  foreach($data as $d){
     echo $d;
  }*/


$db_irattar = new indotekDbConnection("irattar");


for($i=0;$i<4;++$i){
$sql="INSERT INTO akt_hely(Tipus,Megnevezes) 
VALUES('2','$data[$i]')

";
}

$db_irattar->Execute($sql);
$db_irattar->Close();
unset($db_irattar);
?>

Network monitor

【问题讨论】:

  • 您在浏览器中查看val 的值了吗? (使用console.log(val))或者查看监控网络发送的内容?你用什么浏览器?
  • 是的,里面有数据。
  • 它有多大? URL 参数的大小是有限制的,所以最好使用POST 而不是GET
  • 使用 Firefox 内置的 network monitor。查看数据是否确实作为查询参数发送。
  • 它不适用于post。

标签: javascript php jquery mysql


【解决方案1】:

在我看来,您正在分配 var jsonString = JSON.stringify(val); 并在 ajax 中发送 val

试试

var jsonData = $.ajax({
              url: "upload.php",
              data: { 'data' : jsonString},
              dataType:"json", 
                  async: false
              }).responseText;

代替

var jsonData = $.ajax({
              url: "upload.php",
              data: { 'data' : val},
              dataType:"json", 
                  async: false
              }).responseText;

并像$data=json_decode($_GET['data']);这样在php中解码json字符串

【讨论】:

  • 似乎更好,现在在网络监视器中我有upload.php?data=["a',"\nb"],但仍然有一个空行进入mysql。我应该怎么做在upload.php中有吗?
  • 我认为 val[] 可以比 url 的最大大小更长。但它不适用于 $_POST.... 你能帮帮我吗,
  • 如果他发送jsonString,他需要在PHP中使用json_decode($_GET['data'])
猜你喜欢
  • 2014-01-08
  • 1970-01-01
  • 2012-12-14
  • 2017-06-17
  • 1970-01-01
  • 2013-12-23
  • 2018-09-29
  • 2016-10-13
相关资源
最近更新 更多