我的网站上有一个运行购物车样式应用程序的表单。要添加项目,我使用提交按钮将值POST到表单。要删除项目,我必须使用GET命令。
我想要做的是限制选择的可能性 - 当您选择一个选项时,其他选项将被删除。例如,如果我有三个选项:苹果,橘子,香蕉,你只能选择一个。
苹果 桔子 香蕉
如果您选择苹果,我想发布值"苹果"同时使用GET命令删除" Bananas"和#34;橘子"。
目前我这样做是为了发布值:
<form method="post">
<fieldset>
<input type="hidden" name="jcartToken" value="<?php echo $_SESSION['jcartToken'];?>" />
<input type="hidden" name="id" value="Apples" />
<input type="hidden" name="name" value="Apples" />
<input type="hidden" name="color" value="red" />
<input type="hidden" name="shape" value="round" />
<div id="apples" >
<input type="submit" name="my-add-button" class="add" value=" "/>  Apples
</div>
</fieldset>
</form>
要删除我执行此操作的项目:
<a href="index.php?jcartRemove[]=Bananas&jcartRemove[]=Oranges">remove Bananas and Oranges</a>
有没有办法同时做两件事?我尝试过这样的onclick事件:
<div id="Apples" >
<input type="submit" name="my-add-button" class="add" value=" " onclick="location.href='index.php?jcartRemove[]=Bananas&jcartRemove[]=Oranges';" />  Apples
</div>
我也试过在表单的开头使用一个动作
但这些都不起作用 - 他们仍会提交新项目,但不会删除该项目。想知道两者一起做好的方法吗?
答案 0 :(得分:1)
技术上,是的,但这是一个黑客攻击:
<form method="post" action="foo.php?x=y">
<input type="text" name="a" value="b" />
</form>
如果表单设置为POST,则表单中的任何<input>
和<textarea>
都将作为POST数据,但您放入action
的网址的任何查询字符串都将在服务器上显示为GET数据:
$_GET['x'] -> 'y'
$_POST['a'] => 'b'
$_POST['x'] => undefined index
但请注意,点击<form>
内的链接不会提交表单。这就像点击任何其他链接,只会转到新地址。
答案 1 :(得分:0)
您可以使用$_REQUEST
。根据{{3}},引用如下:
一个关联数组,默认包含$ _GET,$ _POST和$ _COOKIE
的内容
如上所述,您可以使用以下hack:
<form method="post" action="foo.php?x=y">
<input type="text" name="a" value="b" />
</form>
编辑:如果GET和POST请求都是单独的,那么您的PHP可能就是问题所在 - 您还没有发布它,所以我可以&#39;看看问题可能在哪里。您可以将一些javascript放在一起以触发删除请求,然后在单击时触发添加请求:
jQuery("input[name|='my-add-button']").click(function() {
var addform = jQuery(this);
event.preventDefault();
$.get("index.php?jcartRemove[]=Bananas&jcartRemove[]=Oranges", function(data) {
addform.submit();
});
});