我想通过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>";
}
感谢您的帮助!
答案 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变量向测试页面发送任何内容。你为什么要这样做我不知道。通过网址发送信息,获取。