我刚接触前端开发,并且我面临着一个我无法解决的问题。
我要做的是通过调用vue.js文件中的axios.post
方法,打开一个新的带有参数(可以作为数组传递)的弹出页面。
我用谷歌搜索了可能的解决方案,但仍然找不到问题的根源。观察Chrome控制台,我怀疑axios.post
工作正常,因为它说:
数组数据:“
( index_id => 1 log_id => 63)数组ow.print();// });",状态: 200,statusText:"OK",…:{…},配置:{…}、…}
但是,在弹出窗口中,我无法访问变量,或者它们是null
。
以下代码是我的vue.js中的一个函数:
printTransaction: function(index){
// I have tried this but could not figure out
// var formData = new FormData();
// formData.append('index_id', index);
//
// axios.post('/popup/popup_output_print.php', {
// index_id: index,
// })
// .then(function(response){
// console.info(response);
// })
// .catch(function(error) {
// console.error(error);
// })
// and this too :(
const params = {
index_id: index,
log_id: logId,
};
axios.post('/popup/popup_output_print.php', params, {
headers: {
'content-type': 'application/json',
},
})
.then(function(response) {
console.info(response);
})
.catch(function(error) {
console.error(error);
})
let newWin = window.open('/popup/popup_output_print.php');
setTimeout(function() {
newWin.print();
//newWin.close();
}, 2000);
}
这是popup_output_print.php的第一部分
<?php require("../_/inc/init.php");
$data = json_decode(file_get_contents("php://input"), TRUE);
$index_id = $data['index_id'];
$log_id = $data['log_id'];
print_r($data);
?>
...
//Trying to print the value
<?php
if($index_id == null) {
echo "index_id is null";
}
else {
echo $index_id;
}
?>
然后弹出窗口将打印index_id is null
我做错了什么?
更新:在评论之后,我刚刚尝试了var_dump
,变量都是null
。:(
发布于 2018-06-28 03:29:54
实际情况是,axios.post
对window.open完全没有影响
let newWin = window.open('/popup/popup_output_print.php');
这会产生一个不带参数的GET请求。
在我看来,更好的方法是使用像Vue modal这样的东西,即:
axios(...).then( response => openVueModal(response.data))
如果您更喜欢window.open
选项,可以将变量作为GET params传递:
let newWin = window.open(`/popup/popup_output_print.php?index_id=${index}&log_id=${logId}`);
然后你需要改变后端,从$_GET
读取变量。
其他的解决方案可能是,将axios.post
放入窗口打开的模板中,这样在打开后它就会请求所需的变量。
https://stackoverflow.com/questions/51058712
复制相似问题