[英]Retrieving values from an Ajax post in PHP
我使用ajax請求提交表單,該請求將值發布到php腳本,然后將這些值存儲在數據庫中。 這是我的ajax帖子:
$.ajax({
type:"POST",
url: "wp-content/plugins/super-plugin/process.php",
'data': 'datastring',
success: function() {
$('#formwrapper').html("<div id='message'></div>");
$('#message').html("<h2>Contact form submitted!</h2>")
.append("<p>We will be in touch soon.</p>").hide().fadeIn(1500, function() {
$('#message').append("<img id='checkmark' src='images/check.png' />");
});
}
});
這是我的PHP文件:
$full = explode("&", $_POST["data"]);
$fname = explode(":", $full[0]);
$name = $fname[1];
$femail = explode(":", $full[1]);
$email = $femail[1];
$fphone = explode(":", $full[2]);
$phone = $fphone[1];
$conn = mysqli_connect("localhost", "Andrew", "Change0", "plugindatadb");
mysqli_query($conn, "INSERT INTO data (Name, Email, Phone) VALUES ('$name', '$email', '$phone')");
數據字符串中的數據的格式為“名稱:Bo&email:bob @ mail&phone:0786754333”。 但是由於某種原因,我不能使用那些在我的PHP腳本中發送的變量? 由於某種原因,PHP腳本無法正常運行。
您提到過,您在變量datastring中設置了格式化的查詢參數,然后在這種情況下,應在ajax請求中使用如下所示的內容(刪除data和datastring的引號)。
$.ajax({
type:"POST",
url: "wp-content/plugins/super-plugin/process.php",
data: datastring,
success: function() {
$('#formwrapper').html("<div id='message'></div>");
$('#message').html("<h2>Contact form submitted!</h2>")
.append("<p>We will be in touch soon.</p>").hide().fadeIn(1500, function() {
$('#message').append("<img id='checkmark' src='images/check.png' />");
});
}
});
從數據字符串中刪除''
data: datastring
bt這不是將數據傳遞到data之類的json中的正確方法,
$.ajax({
type:"POST",
url: "wp-content/plugins/super-plugin/process.php",
'data': {
name:"Bo",email:"bob@mail",phone:"0786754333"
},
success: function() {
$('#formwrapper').html("<div id='message'></div>");
$('#message').html("<h2>Contact form submitted!</h2>")
.append("<p>We will be in touch soon.</p>").hide().fadeIn(1500, function() {
$('#message').append("<img id='checkmark' src='images/check.png' />");
});
}
});
並進入php頁面。
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
首先,在:
'data': 'datastring',
如果“數據字符串”是一個變量(如您對其格式的說明所示),則這些值不應用引號引起來。 所以:
data: datastring,
其次,如果您的PHP腳本假設傳入的數據可以拆分為多個組件,並且在不首先驗證數據是否為所需格式(或至少存在那些數組元素)的情況下訪問了這些數組元素,則它將拋出一個如果數據無效,則異常。 當前正在發生這種情況,因為數據是“數據字符串”。 您應該始終驗證輸入參數,因為從長遠來看,這樣可以節省時間。
將ajax
調用中的data
更改為
data : { datastring : datastring },
在php中訪問它像$_POST['datastring']
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.