我試圖做一個網絡聊天室,但是當我發送POST請求到服務器,使用此代碼:阿賈克斯POST請求,parseerror
var line_count = 0;
$.ajax({
type: 'POST',
url: '../scripts/engine.php',
data: {'method': 'getMsg', 'line_count': line_count},
dataType: 'json',
error: function(request, error) {
alert('Error: '+error);
},
success: function(data) {
$.each(data.messages, function(i, val) {
$('.messages').append(val);
});
line_count = data.srv_count;
}
});
和:
<?php
$method = $_POST['method'];
switch($method) {
case 'postMsg':
$sender = $_SESSION['username'];
$message = $_POST['message'];
$time = $_POST['time'];
fwrite(fopen('chat.txt', 'a'), '<div class="time">[' . $time . ']</div><div class="nickname">' . $sender . '</div>' . $message . "\n");
break;
case 'getMsg':
$log = array();
if(file_exists('chat.txt')) {
$usr_count = $_POST['line_count'];
$srv_msg = explode("\n", file('chat.txt'));
$srv_count = count($srv_msg);
$log['srv_count'] = $srv_count;
if($usr_count < $srv_count) {
$i = 0;
while(list($key, $val) = each($srv_msg)) {
if ($i > $usr_count) {
$log['messages'][i] = $val;
}
$i = $i+1;
}
}
} else {
$log = false;
}
echo json_encode($log);
break;
}
?>
然後我從ajax錯誤函數中得到這個錯誤信息: 「Error:parseerror」。我多次查看代碼,但是我不知道問題出在哪裏。 在此先感謝
謝謝大家的快速解答 我檢查從服務器返回的值,我undertood這是一個服務器端的問題。 returnded值:
警告:爆炸()預計參數2爲字符串,陣列中X給出:\ WWW \根\腳本\ engine.php線
{「srv_count 「:0}
我剛編輯我的代碼爲:
$usr_count = $_POST['line_count'];
$srv_msg = explode("\n", file_get_contents('chat.txt'));
$srv_count = count($srv_msg);
$log['srv_count'] = $srv_count;
if($usr_count < $srv_count) {
$i = 0;
while(list($key, $val) = each($srv_msg)) {
if ($i > $usr_count) {
$log['messages'][$i] = $val;
}
$i = $i+1;
}
}
現在我t的工作正常。
不確定它很重要,但從php中刪除中斷。也調試$日誌,確保它是在有效的json編碼。 – Mihai
我該怎麼辦? –
Thx我將編輯代碼 –