ajax将数据发送到“test.php”,然后直接打开“test.php”以显示结果

时间:2013-04-30 12:06:11

标签: php ajax

我想通过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 个答案:

答案 0 :(得分:3)

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

现在,我不知道你想在这里做什么,但是,为什么当你不想使用它时发送一个Ajax请求?。

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

答案 1 :(得分: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.
     },
});

答案 2 :(得分: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>";
}

希望这对你有用......

答案 3 :(得分:0)

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