[英]Passing a javascript variable to a php switch case statement
javascript參數“ Step”應觸發php中的切換大小寫功能。 如果Step是一個觸發器,則在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);
}
?>
將Step放入報價data : {"Step" : Step,...
在這種情況下,您將傳遞變量的值作為鍵,也就是說,您實際上正在傳遞data : {"one" : "one",...
您應該對inputLname
和inputFname
進行相同的inputFname
。
編輯-說明
如果您在http://api.jquery.com/jQuery.ajax/上查看contentType選項的作用,則會看到默認值是application/x-www-form-urlencoded
,這是您想要的。 本質上,PHP錯誤指示的是$_POST
數組為空,因為由於格式,它不知道如何讀取數據。 您希望返回的數據為json
,僅需要dataType
選項。
您仍然需要按照我在文章的第一部分中指出的做事,但是從本質上講,您有兩個錯誤使您絆倒。
我希望這是有道理的!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.