ajax传递数组值,如何获取被调用页面上的数组

时间:2013-10-28 07:31:05

标签: javascript php jquery ajax

我有包含图像路径的数组,

GenerateReport[0] ="../images/Desert1.jpg"
GenerateReport[1] ="../images/Desert2.jpg"
GenerateReport[2] ="../images/Desert3.jpg"
GenerateReport[3] ="../images/Desert4.jpg"
GenerateReport[4] ="../images/Desert5.jpg"

我正在尝试使用以下代码传递此数组,

$.ajax({
type: "POST",
url: "generatePdf.php",
data: { 
genRep: "sample value"
},
success: function(data) {
                 alert(data);
             console.log('getting '+data);
             }

    });

示例值成功传递,但是如何将数组传递给ajax并在另一个页面上使用?我尝试传递数组并使用下面的代码,但它无法正常工作

$data1 = $_REQUEST['genRep'];

echo "tested".$data1[0];

7 个答案:

答案 0 :(得分:1)

尝试

genRep = []; 
$.ajax({
    type: "POST",
    url: "generatePdf.php",
    data: { 
        genRep: GenerateReport
    },
    success: function(data) {
        alert(data);
        console.log('getting '+data);
    }

});

它会将您的数组发送为genRep

答案 1 :(得分:1)

尝试使用json对象。在对象中,您可以存储图像路径

           var data=[]; // array
           var data[0] = 'something';
           var data[1] = 'something1';
           var data = { 'name': name, 'email' : email, 'contact' : contact, 'type' : type, 'msg' : msg }; // object 
           $.ajax({
               url : 'contact.php',
               type : 'POST',
               data : {contact:JSON.stringify(data)}, // for json object
               data : {contact: data}, // for array
               success : function (msg)
               {
                   alert(msg);
               }
           })

<强> contact.php

 $info = $_POST['contact'];
 $info = json_decode($info,true); // for json object
 echo $info.name; // for json object

 echo $info[0]; // will print something...

答案 2 :(得分:1)

$arr = array();
$arr[0] = "Mark Reed";
$arr[1] = "34";
$arr[2] = "Australia";
echo json_encode ($arr);

在php页面上使用它 并使用以下内容获取输出

success:function(msg){
id_numbers = JSON.parse(msg);
alert(id_numbers)
}

答案 3 :(得分:0)

尝试:

$.ajax({
    url: "generatePdf.php",
    type: 'POST',
    data: form_data,
    dataType:"json",
    success: function(data) {
        alert(data[0]);
   }

在PHP方面,你会想要打印:

print json_encode($photos);

做出一些改变

print json_encode(array("photolist"=>$photos));

然后在服务器上,您可以通过以下方式访问它们:

data.photolist[0]; //First photo

答案 4 :(得分:0)

我已经测试过,这将绝对工作!

JS:

var GenerateReport = [];
GenerateReport[0] ="../images/Desert1.jpg";
GenerateReport[1] ="../images/Desert2.jpg";
GenerateReport[2] ="../images/Desert3.jpg";
GenerateReport[3] ="../images/Desert4.jpg";
GenerateReport[4] ="../images/Desert5.jpg";

$.ajax({
    type: 'POST',
    url: 'generatePdf.php',
    data: 'image_array='+GenerateReport,
    success: function(msg) {
        alert(msg);
    }
});

generatePdf.php

<?php
$image_string = $_POST['image_array'];
$image_array = explode(",", $image_string);
print_r($image_array);
?>

然后你可以遍历 $ image_array 来获取值。

答案 5 :(得分:0)

试试这个

GenerateReport[0] ="../images/Desert1.jpg"
GenerateReport[1] ="../images/Desert2.jpg"
GenerateReport[2] ="../images/Desert3.jpg"
GenerateReport[3] ="../images/Desert4.jpg"
GenerateReport[4] ="../images/Desert5.jpg"

更正后的代码:

var imagedata = '';
$.each(GenerateReport,function(index,value))
{
  if(imagedata=='')
  {
    imagedata = imagedata +'image'+index+'='+value;
  }
  else
  {
    imagedata = imagedata +'&image'+index+'='+value;
  }
});
$.ajax({
type: "POST",
url: "generatePdf.php",
data: imagedata               //pass string imagedata
success: function(data) {
                 alert(data);
             console.log('getting '+data);
             }

    });

imagedata应该像这样刺痛:

image1 = .. / images / Desert1.jpg&amp; image2 = .. / images / Desert2.jpg 等等

答案 6 :(得分:0)

if(isset($_REQUEST['genRep']))
{
$data = $_REQUEST['genRep'];
print_r($data1);
echo "tested".$data1[0];

createPdf($data);
    }

我的代码是正确的,索引0没有值,这就是为什么它没有打印任何东西。我错误!!!