【发布时间】:2011-10-10 16:57:43
【问题描述】:
我正在使用 JavaScript 和 AJAX 将表单数据发送到 php 处理文件,然后在不刷新初始表单页面的情况下填充 SQL 数据库。
php/SQL 连接正常,但表单数据未正确发送。
有两个字段:一个名为“choice”的单选组和一个名为“cmets”的文本字段。填充数据库时,选择字段始终为“是”(3 个单选按钮中的第一个),而 cmets 字段始终为空白。我认为问题一定出在构建数据字符串的方式上,但数小时的修修补补没有带来成功。
这是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}
但我不确定他要如何或以什么格式获取参数值。
谢谢
-音节
【问题讨论】:
-
您也可以添加 HTML 表单的相关部分吗?我认为单选按钮不能有ID,而是
name,你必须弄清楚哪个被选中(所有按钮共享一个name)。 -
收音机不能在同一个 ID 内。做出这个选择0,choice1,choice2
-
谢谢大家,我将 id 更改为choice0,1 等。这是我不久前修复的,一定是因为愤怒的 ctrl-z 发脾气而撤消了。
-
@sylable:为数据使用哈希时的参数值是字符串(或可以准确转换为字符串的东西,如数字)。 jquery 基本上采用此哈希并在其上运行
$.serialize,将其转换为您尝试手动编码的字符串。说到这,如果您要手动执行,我相信您需要encodeURIComponent()每个值。