【发布时间】:2012-05-10 15:12:35
【问题描述】:
javascript 参数“Step”应该触发 php 中的 switch-case 函数。如果 Step 是 1,则在 php 中触发这段代码并通过 JSON 返回输出。
如果我看一下萤火虫,帖子字符串是:Step=one&inputFname=rick&inputLname=bovenkamp 我认为这是正确的。所以问题一定出在php文件中,我认为是在$_POST部分...
我做错了什么?任何帮助都会非常棒!
javascript代码:
$(document).ready(function() {
$("form#userForm").submit(function() {
var inputFname = $('#inputFname').attr('value');
var inputLname = $('#inputLname').attr('value');
var Step = "one";
$.ajax({
type: "POST",
url: "main.php",
data: {Step: Step,inputFname: inputFname,inputLname: inputLname},
dataType: "json",
contentType:"application/json; charset=utf-8",
success: function(data) {
$("p.succesText").html(data.jsCode);
$("form#userForm").hide();
$("div.success").fadeIn();
},
error: function(xhr, status, error) {
$("form#userForm").hide();
$("p.errorHead").html("Something went wrong.");
$("p.errorText").text("ResponseText: " + xhr.responseText
+ "Statuscode: " + xhr.status
+ "ReadyState: " + xhr.readyState);
$("div.error").fadeIn();
}
});
return false;
});
});
PHP 文件:
<?php header('content-type: application/json; charset=utf-8');
$log = array();
$varStep = htmlspecialchars(trim($_POST["Step"]));
switch($varStep) {
case "one":
$varFname = htmlspecialchars($_POST["inputFname"]);
$varLname = htmlspecialchars($_POST["inputLname"]);
//Make Database connection
$db = mysql_connect("192.168.178.254","root","852456");
if(!$db) die("Error connecting to MySQL database.");
mysql_select_db("Ajax" ,$db);
//Generate code and check if code already exists in the database
do
{
$varCode = rand(10000, 99999);
$dbCheckCode = "";
$dbCheckCode = mysql_query("SELECT * FROM TableAjax WHERE code='$varCode'");
}
while (mysql_fetch_array($dbCheckCode) !== false);
//Save the Form data in the database
$sql = "INSERT INTO TableAjax (fname, lname, code) VALUES (".PrepSQL($varFname) . ", " .PrepSQL($varLname) . ", " .PrepSQL($varCode) . ")";
mysql_query($sql);
//Return code to frontend
$log['jsCode'] = $varCode;
break;
}
echo json_encode($log);
//Clean SQL statement
function PrepSQL($value)
{
if(get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
$value = "'" . mysql_real_escape_string($value) . "'";
return($value);
}
?>
【问题讨论】:
-
你检查过php接收到的值(step)吗?
-
我建议您立即更改您的 mysql 登录数据,因为将其发布在网站上并不是一个好主意。
-
@Jeroen 别担心那是假数据。顺便谢谢 ;-)
-
您是否在不使用 ajax 的情况下使用普通表单帖子测试了 php?您可以使用脚本顶部的
ini_set('display_errors',1); error_reporting(E_ALL | E_STRICT);启用错误显示,为所有数据库调用添加错误处理并查看它显示的内容。 -
嗨 Jeroen,我在没有 ajax 的情况下尝试了它并直接转到 url http://192.168.178.254/test/main.php?Step=one&inputFname=Sjaakie&inputLname=Hoek 不幸的是没有成功它返回一个空[]
标签: php jquery ajax post switch-statement