我从未过多考虑过如何在不使用<form>
的情况下提交数据。我最初只专注于表单的设计。
现在,我无法在没有POST
标记的情况下尝试发送<form>
数据。
我正在使用bootstrap
框架。
另外,我如何获得要提交的<select>
标记中的值。下面是我的HTML和PHP代码。
以下HTML
<div id="box1">
<input name="fname" type="text" placeholder="name">
</div>
<div id="box2">
<select id="food" name="food">
<option value="meat" name="nmeat"> meat </option>
<option value="fruit" name="nfruit"> fruit </option>
</select>
</div>
// ^ Above code is in a JQuery Conditional Statement
// When user select meat, <select id="meat"> will display else fruit
<div id="box3">
<!--MEAT-->
<select id="meat" name="topic">
<option value="hotdog" name="nhotdog"> hotdog </option>
<option value="sausage" name="nsausage"> sausage </option>
</select>
<!--FRUIT-->
<select id="fruit" name="topic">
<option value="apple" name="napple"> apple </option>
<option value="grapes" name="ngrapes"> grapes </option>
</select>
</div>
<div id="box4">
<textarea name="desc" rows="5" class="span11" placeholder="Description"></textarea>
<button name="submit" class="btn btn-large btn-block btn-primary" type="button">Submit</button>
</div>
以下PHP
我很难在PHP中使用正确的语法,特别是如果提交的值不在<form>
<?php
if ( isset( $_POST['submit'] ) ) {
$name = $_POST["fname"]; //box1
$gender =$_POST["gender"]; //box2
$topic =$_POST["topic"]; //box3
$desc =$_POST["desc"]; //box4
//echo $msg;
$sql = "insert into z_form (name) values ('".$msg."')";
mysql_query( $sql );
} else {
echo "error";
}
?>
答案 0 :(得分:3)
真的,只需使用<form>
标签即可。 POST
方法需要<form>
标记。我没有看到任何有效理由从表单中排除<form
代码。
现在,我无法在没有标记的情况下尝试发送POST数据。我使用bootstrap框架。
Bootstrap并不限制您使用<form>
标记。 :)
将您的表单包裹在<form
标记中,如下所示:
<form action="somefile.php" method="post" name="myForm">
<!-- your form code here -->
</form>
此外,更改您的按钮:
<button name="submit" class="btn btn-large btn-block btn-primary" type="button">Submit</button>
为:
<input type="submit" name="submit" value="Submit" class="btn btn-large btn-block btn-primary"/>
最后,在您的PHP代码中,您正在做:
$gender =$_POST["gender"];
但是没有名称属性为gender
的输入字段。您应该创建一个具有该名称的输入字段,或者从脚本中删除该定义。
那应该解决问题。干杯!
答案 1 :(得分:0)
为什么不使用<form>
?所有其他方法都包括将jquery与ajax结合使用,或者仅使用ajax来发送值。但是没有理由不使用<form>
标记。
答案 2 :(得分:0)
首先,您需要包含表单标记:
<form action="process.php" method="post">
//form content
</form>
更改提交按钮。将名称更改为“提交”以外的其他内容以避免命名空间冲突也很好:
<input type="submit" name="sub" class="btn btn-large btn-block btn-primary" value ="Submit" />
另外,请选择不同的名称(您有两个名称为“topic”):
<select id="meat" name="meat">
<option value="hotdog" name="nhotdog"> hotdog </option>
<option value="sausage" name="nsausage"> sausage </option>
</select>
然后从$_POST
:
$meat = $_POST['meat'];
答案 3 :(得分:0)
在#box3
中,您有2个具有相同名称的选项。
尝试类似:
<select id="meat" name="meatSelect">
<select id="fruit" name="fruitSelect">
然后:
$meatSelect = $_POST['meatSelect'];
$fruitSelect = $_POST['fruitSelect'];
答案 4 :(得分:0)
如果您只想使用提交按钮提交数据,我一直认为您必须使用-tag。 另一种方法是使用一个按钮并使用javascript / jquery从字段中读取数据,并通过带有url的get-parameters提交它们。 然而,似乎你想要经典/简单的方式。所以你需要并定义方法和动作。
另外一点提示:尝试使用带有mvc-(模型视图控制器)模式的php框架。当您以正确的方式使用它时,它使您更容易处理代码,带来预定义的函数/类,并使您的函数更安全。这种框架的一个例子是codeigniter,但还有更多......
答案 5 :(得分:0)
请参阅以下代码:
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$(button).click(function() {
var name=$("#name").val();
var frt=$("#fruit").val();
var gender = $("#gender").val();
var topic= $("#topic").val();
var descr= $("#description").val();
var dataString = 'name='+name+'fruit='+ frt+'gender='+gender+'topic='+topic+'desc='+descr;
$.ajax
({
type: "POST",
url: "ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$("#success").html(html);
}
});
});
});
</script>
您应该在所有下拉字段中添加ID。 还添加了要查看显示成功或错误结果的内容
<div id="success"></div>