【问题标题】:Send javascript array to php using ajax使用ajax将javascript数组发送到php
【发布时间】:2016-10-14 15:01:05
【问题描述】:

如何将 javascript 数组发送到 php? 我对每个 javascript 数组都使用 JSON.stringify 并使用 json_decode 捕获数组,但仍然无法正常工作。

我不知道该怎么做了。有什么建议吗?

在 JS 中:

 jarak = new Array(koordinat_kapal_threat.length);
 for (var i = 0; i < jarak.length; i++) {
     jarak[i] = new Array(koordinat_kapal_threat.length);
     for (var j = 0; j < jarak.length; j++) {
         if (i === j) {
             jarak[i][j] = 0;
         } else {
             var distance = getDistance(koordinat_kapal_threat[i], koordinat_kapal_threat[j]);
             jarak[i][j] = distance;
         }
     }
 }

 // buat array visibilitas
 visibilitas = new Array(koordinat_kapal_threat.length);
 for (var i = 0; i < visibilitas.length; i++) {
     visibilitas[i] = new Array(koordinat_kapal_threat.length);
     for (var j = 0; j < visibilitas.length; j++) {
         if (i === j) {
             visibilitas[i][j] = 0;
         } else {
             var visibilitas_kapal = 1 / jarak[i][j];
             visibilitas[i][j] = visibilitas_kapal;
         }
     }
 }

 var tau = 0.01;
 // buat array feromon
 feromon = new Array(koordinat_kapal_threat.length);
 for (var i = 0; i < feromon.length; i++) {
     feromon[i] = new Array(koordinat_kapal_threat.length);
     for (var j = 0; j < feromon.length; j++) {
         feromon[i][j] = tau;
     }
 }

 var banyak_semut = koordinat_kapal_threat.length;

 var a = JSON.stringify(koordinat_kapal_threat);
 var b = JSON.stringify(jarak);
 var c = JSON.stringify(visibilitas);
 var d = JSON.stringify(feromon);

 var data = {
     koordinat_kapal_threat: a,
     jarak: b,
     visibilitas: c,
     feromon: d,
     banyak_semut: banyak_semut
 };




 $.ajax({
     type: "POST",
     dataType: "json",
     url: "algoritmaAnt.php",
     data: data,
     success: function (result) {
         var data = JSON.parse(result.responseText);
         var jalur = new google.maps.Polyline({
             path: data,
             geodesic: true,
             strokeColor: '#FCFF49', strokeOpacity: 1.0,
             strokeWeight: 2,
         });
         jalur.setMap(map);
     }
 });

在 PHP 中:

$koordinat_kapal_threat =json_decode($_POST['koordinat_kapal_threat']);   
$jarak = json_decode($_POST['jarak']); 
$visibilitas =json_decode($_POST['visibilitas']); 
$feromon = json_decode($_POST['feromon']); 
$banyak_semut = $_POST['banyak_semut'];

【问题讨论】:

  • 如果您不提供相关代码以及您尝试发送的数组的一些解释,我们不可能知道为什么某些东西不起作用
  • 您是在使用 jQuery 还是使用什么来发送和获取数据...?
  • 我已经更新了我的问题@charlietfl
  • 不是 JQuery 兄弟 @ArunaWarnasooriya
  • 其实根本不需要转换成json,也不需要解码。 var data ={ property_1:[1,4,5]} 可以在$_POST['property_1] 中作为数组接收。

标签: javascript php arrays ajax


【解决方案1】:

这是简单的方法,你需要使用 JSON.stringify 将数据编码为 JSON,同样使用 json_decode 来提取数据

JavaScript var a=JSON.stringify(your_array_name); var b = JSON.stringify(jarak); // 你的数组

// Ajax Call
$.ajax({
     type: "POST",
     dataType: "json",
     async:true,
     url: "algoritmaAnt.php",
     data: {'data1':a,'data2':b},
     success: function (result) {
             // your success operation;
      }
});

PHP 代码

$jarak = json_decode($_POST['data1']);
$data2 = json_decode($_POST['data2']);

print_r($jarak); 
print_r($data2);

【讨论】:

  • 我如何发送多个数组?
  • 根据您的要求编辑,在 ajax 调用数据中也使用 JSON 方法,因此您可以使用分隔符附加数据
  • 在成功的ajax中,如何捕捉结果?我的例子是对的还是错的?
【解决方案2】:

无需对数组进行字符串化。如下更改您的数据变量

var data = {
     koordinat_kapal_threat: koordinat_kapal_threat,
     jarak: jarak,
     visibilitas: visibilitas,
     feromon: feromon,
     banyak_semut: banyak_semut
 };

【讨论】:

    猜你喜欢
    • 2013-12-23
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多