[英]Sending data from javascript to php using via Ajax using jQuery. How to view the data back?
我知道這個問題從早上開始就一直被問到很多,但是我只是想不到代碼中發生了什么。
我有一個index.php(這是我的網站),該網站使用表單從用戶那里接收信息,然后分別調用一個javascript文件,然后依次調用另一個后端php文件(該后端php文件使用mysql查詢數據庫並執行某些操作) 。
問題是我不確定什么信息會從我的js傳遞到后端php。 我剛剛學習了jQuery和Ajax,所以我真的不知道我犯的那個小錯誤是什么。
根據我的理解,后端php會執行其工作,並將該值傳遞給javascript以在網頁上顯示。 但是我的數據沒有被發送/顯示。 我收到錯誤500內部服務器錯誤。
以下是當前存在問題的代碼段:
Javascript:
var data1 = {week:week, group:grp_name};
$.ajax({
dataType: "json",
type: "POST",
url : "php/remindUsers.php",
success : function(response){
alert ("success !");
},
error : function(response){
console.log(response);
alert("fail!");
}
})
});
PHP后端(remindUsers.php):
<?php
if (isset($_POST['week'])) {
$week = $_POST['week'];
}
if (isset($_POST['group'])) {
$group_name = $_POST['group'];
}
echo $week;
?>
我省略了sql代碼段,因為它們可以正常工作。
編輯:現在我的狀態碼是200,響應文本也可以。 我的響應文本在預期的實際響應文本旁邊顯示一個奇怪的“輸入”符號。這正常嗎?並且它仍然進入錯誤塊,而不是代碼成功塊。
通過json的PHP響應中不能包含這些標簽<body>,...
它只能是:
<?php
$week = $_POST("data");
$json = json_decode($week);
echo json_encode($json);
?>
刪除評論
//數據:{week:week}
並設置具有有效值的可變周:
數據:{week:week}
所以:
$.ajax({
dataType: "json",
type: "POST",
url : "php/remindUsers.php",
data : {week :week} ,
success : function(response){
console.log(response);
},
為了看看響應的形狀是什么。
我無法完全回答您的問題,因為我需要更多有關運行情況的調試信息,但是關於您的代碼有2-3件事使我感到有些困惑,這可能會解決您的錯誤。
首先,在您的后端中使用isset,如下所示:
if (isset($_GET['your_input_name'])) {
$someData = $_GET['your_input_name'];
}
isset部分在這里非常重要。 進行設置,然后重試。 如果您不再遇到500錯誤。 這可能是因為您的數據從未發送到您的后端,或者是因為您沒有檢查良好的輸入名稱。
其次,關於輸入名稱。 我可以在您發送的代碼中看到:
var data1 = {week:week, group:grp_name};
因此,在您的后端中,應使用像這樣的值的名稱來檢索數據:
$week = $_POST("week");
第三,我不是json專業人士,但也許您的json無效。 即使他沒事,我還是建議您像這樣建造一個“清潔工”:
var data = [
{ 'name' : 'week', 'value' : week}
];
最后,如果您使用表單將數據發送到php,則可以使用類似的方法:
var myForm = $("#myForm").serializeArray();
$.ajax({
url: 'yourUrl',
type: "GET",
data: myForm,
dataType: 'json',
success: function(res){
//your success code
},
error: function(){
//your error code
}
});
我希望這有幫助。
用這個
的PHP
$week = $_POST['data'];
$json = json_encode($week);
echo $json;
JS
$.ajax({
dataType: "json",
type: "POST",
url : "php/remindUsers.php"
//data : {week :week} ,
data: {data:{week:'week', group:'grp_name'}} ,
success : function(response){
alert ("success !");
},
error : function(response){
alert("fail!");
}
})
您做錯了幾件事。 首先,您不想在將數據發送到服務器之前對數據進行字符串化處理。 您要發送JSON,因此您的注釋行是正確的行。 PHP也有問題。 發送到服務器的數據如下所示:
{week: "Something"}
因此,在您的PHP中,您想訪問如下數據:
$_POST["week"];
我會說將php包裝在一個函數中並回顯json。 檢查是否有POST數據,如果沒有返回錯誤消息,這也很好。 這沒有經過測試,但是希望會指出正確的方向。
<?php
function getJSON() {
if (isset($_POST["data"] && !empty($_POST['data']) ) {
$week = $_POST["data"];
$json = json_decode($week);
echo $json;
} else {
echo "There was a problem returning your data";
}
}
getJSON();
?>
實際上,在撰寫本文時,我意識到您可以在AJAX POST中嘗試這些標頭:
accepts: 'application/json',
contentType: 'application/json',
dataType: 'json'
希望能有所幫助。
有效。 由於有了另一個SO帖子,我找到了答案。
TIL:即使服務器響應正常,也會觸發錯誤情況,因為從php返回到javascript的數據不是json,因為我在ajax請求中明確提到了dataType:“ json” 。
鏈接在這里:
感謝大家的幫助和指導我正確的方向。 干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.