[英]Cant receive data to php variables from ajax
我有一個Fullcalendar插件的功能,應該在mysql bbdd中插入一些由ajax傳輸到php的數據。
select: function(start, end, allDay) {
var title = prompt('Evento a insertar:');
if (title) {
start = $.fullCalendar.moment(start).format('YYYY-MM-DD hh:mm:ss');
end = $.fullCalendar.moment(end).format('YYYY-MM-DD hh:mm:ss');
$.ajax({
url: 'http://localhost/test-fullcalendar/php/add_evento.php',
data: {"title": title, "start": start, "end": end},
type: "POST",
success: function(json) {
alert('OK');
console.log(title + ' ' + start + ' ' + end);
}
});
calendar.fullCalendar('renderEvent',
{
title: title,
start: start,
end: end,
allDay: allDay
},
true
);
}
calendar.fullCalendar('unselect');
}
和我的PHP收到它:
$title = $_POST['title'];
$start = $_POST['start'];
$end = $_POST['end'];
當php告訴我變量是"undefined index"
時,問題就來了。 我嘗試放在isset()
后面,但是echo
不會顯示任何內容,因此無法正確插入mysql表。
有什么問題? 我沒有使用Ajax的經驗,我認為它與success function
有關系,因為我讀到,沒有一種特定的方式可以從ajax接收php中的數據,只有經典的方法POST。
謝謝
您的Ajax結構是正確的,我認為問題是您要發布到php腳本的數據。 嘗試使用console.log(title + ' ' + start + ' ' + end);
在 $.ajax
之前 。 可能一個或多個數據不正確。 可能的問題之一是$.fullCalendar.moment().format()
。 此函數可能不會返回簡單的字符串,因此您不能在ajax數據中使用它。 嘗試將console.log()
用於“開始”,“結束”和“標題”。
嘗試從AJAX調用中傳遞數據的行中刪除雙引號,如下所示
data: {
title: title,
start: start,
end: end
},
我認為您只需要調試一點。
導航到開發人員工具的“網絡”標簽,然后查看發送的內容
如果您發送的所有內容都可以,那么我們可以繼續進行一些修改,以使代碼更加與您交流。
例如,我們可以從成功回調開始:
select: function(start, end, allDay) {
var title = prompt('Evento a insertar:');
if (title) {
start = $.fullCalendar.moment(start).format('YYYY-MM-DD hh:mm:ss');
end = $.fullCalendar.moment(end).format('YYYY-MM-DD hh:mm:ss');
console.log('Sending:', title, start, end);
$.ajax({
url: 'http://localhost/test-fullcalendar/php/add_evento.php',
data: {"title": title, "start": start, "end": end},
type: "POST",
success: function(json) {
var res = JSON.parse(json);
if(res.result === 'OK') {
alert('OK');
}
else {
console.error(res.message);
}
}
});
calendar.fullCalendar('renderEvent',
{
title: title,
start: start,
end: end,
allDay: allDay
},
true
);
}
calendar.fullCalendar('unselect');
}
現在,在PHP部分:
<?php
//Check existance
if(!isset($_POST['title']) || !isset($_POST['start']) || !isset($_POST['end'])) {
echo json_encode(array('result'=>'KO','message'=>'Invalid input! '.var_export($_POST, true)));
exit;
}
//Check emptyness
if(empty($_POST['title']) || empty($_POST['start']) || empty($_POST['end'])) {
echo json_encode(array('result'=>'KO','message'=>'Empty input! '.var_export($_POST, true)));
exit;
}
//title, start and end exists in POST and are not empty
try {
//SQL code, insert/update blablabla
}
catch(Exception $e) {
echo json_encode(array('result'=>'KO','message'=>$e->getMessage()));
exit;
}
//....
//All went ok
echo json_encode(array('result'=>'OK'));
現在,使用此代碼,您將能夠知道PHP發生了什么,並在javascript控制台中查看錯誤。
我有您問題的答案,只需將數據中的start和end變量更改為start.format()和end.format()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.