Javascript 非AJAX jQuery POST请求
我试图使用jQuery POST函数,但它以AJAX风格处理请求。我的意思是它实际上并没有进入页面,我是在告诉它去Javascript 非AJAX jQuery POST请求,javascript,jquery,Javascript,Jquery,我试图使用jQuery POST函数,但它以AJAX风格处理请求。我的意思是它实际上并没有进入页面,我是在告诉它去 $("#see_comments").click(function() { $.post( "comments.php", {aid: imgnum}, function (data) { } ); }); 此函数应转到comments.php页面,并附带aid值。它可以发布,但不能重定向到co
$("#see_comments").click(function() {
$.post(
"comments.php",
{aid: imgnum},
function (data) {
}
);
});
此函数应转到comments.php页面,并附带aid值。它可以发布,但不能重定向到comments.php
@Doug Neiner澄清:
imgnum
我想放在comments.php中。我必须使用这个JavaScript,没有其他方法可以做到这一点。JavaScript是必需的我知道你想做什么,但那不是你想要的 首先,除非您正在更改服务器上的数据,否则不要使用
POST
请求。只要让#查看_评论
成为一个普通的。
如果必须使用POST
,则执行此操作以使页面跟随您的呼叫:
$("#see_comments").click(function() {
$('<form action="comments.php" method="POST">' +
'<input type="hidden" name="aid" value="' + imgnum + '">' +
'</form>').submit();
});
$(“#参见_注释”)。单击(函数(){
$('' +
'' +
'')。提交();
});
这实际上是如何工作的。
首先,$.post
只是一种AJAX方法,不能像您描述的那样用于执行传统的表单
提交。因此,为了能够发布一个值并导航到新页面,我们需要模拟表单
post
因此,流程如下所示:
imgnum
#查看评论
表单
,其中imgnum
值作为隐藏字段comments.php
页面comments.php
页面将有权访问发布的变量(即,在php中,它将是$\u POST['aid']
)$.post()
会向服务器发送一些数据。它不会导致任何重定向,除非您在处理POST请求的服务器端代码中这样做。我可以提出两个解决方案:
$(location.attr(“href”,“comments.php?aid=1”)代码>
我想你要求的是访问“comments.php”并发布
aid
和valueimgnum
。唯一的方法是使用表单提交此值
但是,您可以将此表单隐藏起来,并使用jquery在任意单击某个位置时提交它
必要的html(放在页面的任意位置):
这将重定向到“comments.php”,并发送正确的值
imgnum
(我假设您是从其他地方获得的)。没有完全解决问题。但还是设法解决了这个问题。我不得不对JS进行大量修改以使其正常工作,但这个问题的核心问题通过这样做得到了解决:
$("#see_comments").attr({href: "comments.php?aid='"+imgnum+"'"});
正如@Doug Neiner最初建议我做的那样,这将aid值附加到URL中。
多谢道格的努力。我真的很感激+1并接受您的努力回答。$(“#请参阅"注释”)。单击(函数(){
$("#see_comments").click(function () {
$('<form action="comments.php" method="POST"/>')
.append($('<input type="hidden" name="aid">').val(imgnum))
.appendTo($(document.body)) //it has to be added somewhere into the <body>
.submit();
});
$('')
.append($('').val(imgnum))
.appendTo($(document.body))//必须将其添加到
.submit();
});
虽然Doug Neiner的解决方案不仅正确,而且解释得最全面,但它有一个大问题:它似乎只在Chrome上起作用
我焦躁不安了一会儿,试图确定一个解决办法,然后偶然发现了NOP77的第二个答案。唯一的区别是额外的代码appendTo($(document.body))
。然后我在firefox中测试了它,它的效果非常好。显然,Firefox和IE需要在DOM主体的某个地方附加临时表单
我必须为一个Symfony2项目执行此实现,因为
.twig
模板中的路径生成器只能处理GET
参数,而弄乱查询字符串会破坏应用程序的安全性。(顺便说一句,如果有人知道如何使用.twig模板调用带有帖子参数的页面,请在评论中告诉我)。?重定向?也许你可以再解释一下你想做什么。comments.php和请求文件在同一个文件夹中吗?这篇文章可能会对@metrobalderas有所帮助:我认为这很清楚@脉冲:是的。辅助值来自分贝。因此,我非常希望jquery能够正常工作。因为我也需要我的Javascript。@amit,在您发布的代码中,aid
值不是来自发送到AJAX请求的数据库。你没有公布你的全部功能吗?@amit,那么你的问题就不清楚了。我的代码帖子将imgnum添加到comments.php
文件中,同时重定向。你还想让它做什么?@amit,我并不反对你从哪里来的imgnum
,只是我的答案与你的代码完全相似,只是它与重定向不同。只要试着用$('form….submit();
调用你的$。post
,看看它是否做不到你想要的。你应该将表单附加到DOM中,因为IE和Firefox会忽略提交,否则(如果你想添加更多非隐藏字段-例如文本输入-然后是.hide())在.appendTo()之前也需要调用,以避免在内容中出现任何跳跃)这应该合并到接受的答案中。如果DOM中没有表单,它将不会在Firefox和其他浏览器中提交。它会
$("#see_comments").attr({href: "comments.php?aid='"+imgnum+"'"});
$("#see_comments").click(function () {
$('<form action="comments.php" method="POST"/>')
.append($('<input type="hidden" name="aid">').val(imgnum))
.appendTo($(document.body)) //it has to be added somewhere into the <body>
.submit();
});