我正在使用JavaScript和AJAX将表单数据发送到php处理文件,然后填充SQL数据库而不刷新初始表单页面。
php / SQL连接正常,但表单数据没有正确发送。
有两个字段:名为“choice”的广播组和名为“comments”的文本字段。填充数据库时,选择字段始终为“是”(3个单选按钮中的第一个),并且注释字段始终为空白。我认为问题必须是构建数据字符串的方式,但是几小时的修补都没有带来成功。
这是html表单
<form id="paPoll">
<label><input type="radio" name="RadioGroup1" value="yes" id="choice1">Yes</label>
<label><input type="radio" name="RadioGroup1" value="no" id="choice2">No</label>
<label><input type="radio" name="RadioGroup1" value="dont_know" id="choice3">I Don't Know</label>
<label for="comments">Comments?</label><input name="comments" type="text" id="comments" size="25" maxlength="60">
<input type="button" name="form_process" id="form_process" value="submit" onClick="$.fn.removeMbMenu($.mbMenu.options.actualOpenedMenu,true);" />
</form>
这是Javascript / AJAX函数
<script type="text/javascript">
$(function() {
$("#form_process").click(function() {
var choice = $("#choice").val();
var comments = $("#comments").val();
var dataString = 'choice='+ choice + '&comments=' + comments;
$.ajax({
type: "POST",
url: "**ABSOLUTE URL TO PROCESSOR**",
data: dataString
});
});
});
</script>
这是php处理器
<?php
$choice = $_POST ['choice'];
$comments = $_POST ['comments'];
//perform insert
$query = mysql_query("INSERT INTO paPoll
(choice, comments)
VALUES
('$choice', '$comments')");
if (!query) {
die("Database query failed: " . mysql_error());
}
?>
想法或建议?
我在这里发现了一个非常相似的问题,但这个帖子已经有3年了。用户建议了这个
//Instead of using
data: dataString
//use
data : {param: value, param2: value2}
但我不确定他是如何以及以何种格式获取参数值。
谢谢你 -syllable
答案 0 :(得分:1)
如果是我,我会使用Form plugin让自己变得更轻松。它已经有了ajaxSubmit
个函数集,可以轻松地对表单进行调整。 IT还有一个方便的formSerialize
函数,它将序列化ajax提交的表单或附加到链接的查询字符串。 : - )
这说没有插件并使用现有代码的更简单方法:
$("#form_process").click(function() {
$.ajax({
type: "POST",
url: "**ABSOLUTE URL TO PROCESSOR**",
data: {
'choice': $("input[@name=RadioGroup1]:checked").val(),
'comments': $("#comments").val()
}
});
});
无论哪种方式,您还需要更改所有无线电输入以具有唯一ID(或根本没有ID)...您无法使用所需的所有id属性在文档中具有唯一值的相同ID。
答案 1 :(得分:0)
几个星期前我遇到了同样的问题,我只是尝试使用像这样的老方法
<script type="text/javascript">
$(function() {
$("#form_process").click(function() {
//$("#choice").val(); //you cannot use the same id for more than 1 tag
var choice = 0;
if(document.getElementById("choice1").checked) choice='Yes';
else if(document.getElementById("choice2").checked) choice='No';
else if(document.getElementById("choice3").checked) choice='Dont Know';
var comments = document.getElementById('comments').value; //$("#comments").val();
var dataString = 'choice='+ choice + '&comments=' + comments;
$.ajax({
type: "POST",
url: "**ABSOLUTE URL TO PROCESSOR**",
data: dataString
});
});
});
</script>
我真的不知道,我认为这不是最好的方法,但这对我有用:)