嗨幾天前我問了一個類似的問題,沒有任何迴應。我試圖自己解決這個問題,但沒有成功。 我已經成功地使用了服務器發送的請求,爲數據庫輪詢新條目併成功獲取以json格式返回的數據(在webconsole中確認)。我似乎無法做的是在eSource.onmessage函數中使用其他函數中的數據。如何在服務器發送的事件中使用數據響應
這是jQuery的
<script type="text/javascript">
$(document).ready(function() {//READY FUNC
//check for browser support
if(typeof(EventSource)!=="undefined") {
//create an object, passing it the name and location of the server side script
var eSource = new EventSource("http://newberylodge.co.uk/webapp/includes/messageRetrieve.php");
//detect message receipt
eSource.onmessage = function(event) {
//write the received data to the page
$.each(data, function(key, val) {
//iterate each data
var id = val.id;
var messageId = val.messageId;
var messageSubject = val.messageSubject;
var messageContent = val.messageDetail;
$('#serverData').append('<div id="' + id + '" class="messageAlert">' + messageSubject + '</div>');
$('#serverData').append('<div id="' + messageId + '" class="messageContent">' + messageContent + '</div>');
$('#' +messageId).append('<input id="' + messageId + '" type="button" class="deleteButton" value="Delete Message" />');
});
//EACH DATA
}
$(document).on('click', '#' +messageId, function(){
//on click
$.post("http://newberylodge.co.uk/webapp/includes/deleteMessage.php",{value1 : messageId}, function() {
location.reload(true);
alert('Message Deleted');
});
//POST AJAX
});
//END ON CLICK
};
//TYPE OF EVENT SOURCE
});
//DOCUMENT READY FUNC
</script>
這是PHP處理網頁messageReturn.php
<?php
include_once 'db_connect.php';
$return_arr = array();
$result = mysqli_query($mysqli, "SELECT * FROM message");
while($row = mysqli_fetch_array($result)) {
$row_array['id'] = $row['id'];
$row_array['messageId'] = $row['messageId'];
$row_array['messageSubject'] = $row['messageSubject'];
$row_array['messageDetail'] = $row['messageDetail'];
array_push($return_arr,$row_array);
}
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
echo json_encode($return_arr);
flush();
?>
這,我相信我會錯了,但不知道如何
eSource.onmessage = function(event) {
//write the received data to the page
$.each(data, function(key, val) {
//iterate each data
var id = val.id;
var messageId = val.messageId;
var messageSubject = val.messageSubject;
var messageContent = val.messageDetail;
$('#serverData').append('<div id="' + id + '" class="messageAlert">' + messageSubject + '</div>');
$('#serverData').append('<div id="' + messageId + '" class="messageContent">' + messageContent + '</div>');
$('#' +messageId).append('<input id="' + messageId + '" type="button" class="deleteButton" value="Delete Message" />');
});
//EACH DATA
}
我想要做的是從響應中獲取json數據,以便我可以在腳本中的其他函數中使用它。 任何人都可以協助嗎?
嘗試循環之前增加一個'typeof運算data' ,我敢打賭這是一個字符串,而不是一個對象,並且你需要執行'data = JSON.parse(data)' – adeneo
所以你已經設法在console.log中返回jQuery代碼中的數據? – Zak
@zac我有頁面生活和瀏覽器中,我可以看到響應爲json。在這裏住的頁面:http://newberylodge.co.uk/webapp/message.html – Tiny