我目前正在努力,因为我想加载由PHP提交的同一页面。为了使这更清楚,这是一个评论部分,在人们提交他们的消息后,我想检索相同的信息加上新信息。
我遇到了问题因为我没有通过AJAX这样做。
因此,index.php具有以下内容:
/* Before HTML tag */
if(Cookie::Exists('comment')){
$data = unserialize(stripslashes(Cookie::Get('comment')));
if($data['status'] == 1){
$page = "<script type='text/javascript'>set_product_id('" . $data['id'] . "')</script>";
}
Cookie::Delete('comment', time() - 3600);
}
/* Further ahead.. (inside body) */
<form method="POST" action="insert_info.php" data-ajax="false">
<input type="hidden" id="product_id" name="product_id"/>
<input type="text" id="name_" name="name_" required="required"/>
<input type="text" id="comment" name="comment" required="required"/>
</form>
/* After body */
<script type="text/javascript">
$(document).on("pagebeforeshow", "#page-comments", function() {
$(function(){
get_comments(objs.product_id);
});
});
var objs = {
product_id : ''
}
function set_product_id(id){
objs.product_id = id;
$.mobile.changePage('#page-comments', {role: 'dialog'});
}
</script>
/* After the HTML tag */
<?php echo $page; ?>
我确实收到了正确的ID等,在提交评论之前它也完美无缺。页面加载内容没有任何问题,等等。
insert_info.php
new_comment($host, $user, $pass, $db);
$arr = array("status" => 1, "id" => $_POST['product_id']);
Cookie::set('comment', serialize($arr), time()+60);
header("Location: ../index.php");
exit();
当我执行此操作时,我确实在谷歌Chrome控制台上收到以下错误:
Uncaught TypeError: Cannot call method 'trigger' of undefined
指着这条线:
function set_product_id(id){
objs.product_id = id;
$.mobile.changePage('#page-comments', {role: 'dialog'});
}
我错过了什么?感谢。
编辑:将set_product_id()函数更改为:
$('#page-main').on('pagecreate', function(event) {
$.mobile.changePage('#page-comments', {role: 'dialog'});
});
评论页面会再次出现并消失。但是,如果我删除“对话框”,页面将保持正常运行。但我需要这个对话。
答案 0 :(得分:2)
您的$.mobile.changePage()
需要包含网址..
所以这个:
$.mobile.changePage('#page-comments', {role: 'dialog'});
应该是这样的:
$.mobile.changePage('../index.php', {role: 'dialog'});