我正在对要在浏览器中呈现的另一个 php文件进行POST。 jquery post函数不会重定向到另一个页面。它希望app-display.php文件将数据返回给它。看看代码。
echo '<div class="showcase_URL"><a class="purl" name="'.$row->num.'" href="#">PROJECT URL</a></div>';
到目前为止我在javascript中所拥有的是:
$(".showcase_URL a").click(function() {
//alert($(this).attr("name"));
var number = $(this).attr("name");
$.post(
"app-display.php",
{app: number},
function(data){
top.location.href = 'app-display.php';
});
});
我在app-display.php中的内容:
$query = 'SELECT num, title, thumb_url, url, type, cat, dated, details FROM app WHERE `num` = "$_POST[app]"';
但它目前给了我一个没有app-display.php内容的页面。页面的所有其他片段都在加载:页眉,页脚等。 我得到的PHP响应(在Firebug中)是页面的正常html。
我应该怎么做?
答案 0 :(得分:1)
只需使用普通的<form action="app-display.php">
这样就不需要获取数据了。
答案 1 :(得分:1)
在回调中设置top.location.href
是问题 - 这是重定向。 $.post()
正确地进行POST,一旦完成,就会触发它的回调函数,返回data
参数中的任何结果。通过在回调中重定向,你将所有这些丢弃并向app-display.php发出直接的GET请求。
如果你真的想要这是一个AJAX电话&amp;没有传递到新页面,更改回调函数以使用data
参数执行某些操作而不是重定向。像function(data) { $('#some-div').html(data); }
之类的东西应该将响应转储到某个div中。
答案 2 :(得分:0)
除了您展示的只定义变量的行外,您在PHP页面中还有什么内容。如果您只是在其中放入一些原始文本,它会显示吗?毕竟我猜你的查询行是错误的,它应该是$query = 'SELECT num, title, thumb_url, url, type, cat, dated, details FROM app WHERE num = '.$_POST["app"];