1

我想通过 ajax 函数将数组从 javascript 发送到 php。而且我不想将结果显示为回调,而是立即打开目标 php 文件并显示图像。我的意思是,我想直接在服务器端打开 php 文件。

我认为这很简单,但我不知道。

我的 javascript 看起来像:

var stringArray = new Array("/images/1.jpg", "/images/2.jpg", "/images/3.jpg");
$.ajax({
     url: 'test.php',
     data: {stringArray:stringArray},
     success: function() {
              window.open('test.php'); // It opens test.php in a window but shows nothing! 
     },
});

test.php 文件:

$stringArray = $_GET['stringArray'];
foreach($stringArray as $value) {
   echo "<img src=" . $value . "></img>";
}

谢谢你的帮助!

4

4 回答 4

3

可能在不需要 POST 数据的情况下调用了 window.open 命令。

现在,我不知道您想在这里做什么,但是,当您真的不想使用它时,为什么要发送 Ajax 请求呢?

编辑:只是为了让它更清楚一点,您似乎在通过 POST 调用没有数据的 php 文件。没有用 POST 数据在 JS 中打开窗口的干净方法,只需尝试 GET 即可获取关键信息。让我们知道它是怎么回事。

于 2013-04-30T12:08:07.563 回答
1

你应该写

var stringArray = new Array("apple", "banana", "orange");
$.ajax({
     type: 'post',
     url: 'test.php',
     data: {stringArray:stringArray},
     success: function(message) {
              window.open(message); // It will open a window with contents.
     },
});
于 2013-04-30T12:10:24.450 回答
1

如我所见,您正在通过 post 方法发送数据并在 test.php 中访问,但是当您通过 window.location 打开文件时,它不会获得 POST 数据,因此不会填充数据

您可以通过 $_SESSION 实现它。在 test.php 中

 session_start();

 if(!empty($_POST['stringArray'])) {
    $_SESSION['stringArray'] = $_POST['stringArray'];               
 } 

 $stringArray = (isset($_SESSION['stringArray']) && $_SESSION['stringArray'] != '') ? $_SESSION['stringArray'] : $_POST['stringArray']; 

 foreach($stringArray as $value) {
   echo "<h3>" . $value . "</h3>";
}

希望这对你有用...

于 2013-04-30T12:19:22.647 回答
0

我没有显示输出,因为当您在回调中打开页面时,您没有通过 post 变量将任何内容发送到测试页面。我不知道你为什么要这样做。通过url发送信息,获取。

于 2013-04-30T12:20:17.820 回答