POST 和 GET 可以组合在一个输入类型中吗?
Can POST and GET be combined within a single input type?
我的网站上有一个表单 运行 购物车样式的应用程序。要添加项目,我 POST 使用提交按钮将值添加到表单中。要删除项目,我必须使用 GET 命令。
我想做的是限制 select 离子的可能性 - 当你 select 一个选项时,其他选项被删除。例如,如果我有三个选项:苹果、橘子、香蕉,你只能select一个。
苹果
橘子
香蕉
如果你 select Apples,我想 post 值 "Apples" 同时使用 GET 命令删除 "Bananas" 和 "Oranges"。
目前我这样做是为了 post 值:
<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>
而且我也试过在表单的开头使用一个动作
但这些都不起作用 - 他们仍会提交新项目,但不会删除该项目。有什么好的方法可以一起做吗?
从技术上讲,是的,但这是一个技巧:
<form method="post" action="foo.php?x=y">
<input type="text" name="a" value="b" />
</form>
如果表单设置为 POST,则表单中的任何 <input>
和 <textarea>
都将作为 POST 数据,但是您放入的任何查询字符串action
的 url 将在服务器上显示为 GET 数据:
$_GET['x'] -> 'y'
$_POST['a'] => 'b'
$_POST['x'] => undefined index
但请注意,单击 <form>
内的 link 不会提交表单。这就像点击任何其他 link 一样,只会转到新地址。
您可以使用 $_REQUEST
。根据php documentation,引用如下:
An associative array that by default contains the contents of $_GET, $_POST and $_COOKIE
如上所述,您可以使用以下技巧:
<form method="post" action="foo.php?x=y">
<input type="text" name="a" value="b" />
</form>
编辑: 如果 GET 和 POST 请求都单独工作,则您的 PHP 可能是问题所在 - 您没有'发布它,所以我看不出问题出在哪里。您可以将一些 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();
});
});
我的网站上有一个表单 运行 购物车样式的应用程序。要添加项目,我 POST 使用提交按钮将值添加到表单中。要删除项目,我必须使用 GET 命令。
我想做的是限制 select 离子的可能性 - 当你 select 一个选项时,其他选项被删除。例如,如果我有三个选项:苹果、橘子、香蕉,你只能select一个。
苹果 橘子 香蕉
如果你 select Apples,我想 post 值 "Apples" 同时使用 GET 命令删除 "Bananas" 和 "Oranges"。
目前我这样做是为了 post 值:
<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>
而且我也试过在表单的开头使用一个动作
但这些都不起作用 - 他们仍会提交新项目,但不会删除该项目。有什么好的方法可以一起做吗?
从技术上讲,是的,但这是一个技巧:
<form method="post" action="foo.php?x=y">
<input type="text" name="a" value="b" />
</form>
如果表单设置为 POST,则表单中的任何 <input>
和 <textarea>
都将作为 POST 数据,但是您放入的任何查询字符串action
的 url 将在服务器上显示为 GET 数据:
$_GET['x'] -> 'y'
$_POST['a'] => 'b'
$_POST['x'] => undefined index
但请注意,单击 <form>
内的 link 不会提交表单。这就像点击任何其他 link 一样,只会转到新地址。
您可以使用 $_REQUEST
。根据php documentation,引用如下:
An associative array that by default contains the contents of $_GET, $_POST and $_COOKIE
如上所述,您可以使用以下技巧:
<form method="post" action="foo.php?x=y">
<input type="text" name="a" value="b" />
</form>
编辑: 如果 GET 和 POST 请求都单独工作,则您的 PHP 可能是问题所在 - 您没有'发布它,所以我看不出问题出在哪里。您可以将一些 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();
});
});