所以我有一个从数据库(ajax.php)获取消息的php文件和一个向该ajax.php文件(main.js)发出ajax请求的javascript文件。
我想要的是:当php多次响应时,js文件会为每一个创建一个表行。
main.js:
function doAjax(variable) {
$.ajax({
type: "POST",
url: "ajax.php"
data: { content: variable },
dataType: 'JSON',
success: function (response) {
response.forEach(function(data) {
$(".messages-table").append("<tr><th>"+from+"</th><th>"+text+"</th><th>"+date+"</th><th>"+num+"</th></tr>")
})
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
}
ajax.php:
<?php
...
foreach ($messages as $message) {
$from = $message['contact_value'];
$text = $message['message'];
$date = $message['date'];
$num = $user['phone_number'];
echo json_encode(array("from"=>"$from", "text"=>"$text", "date"=>"$date", "num"=>"$num"));
?>
但是当我这样做时,我在开发者控制台中收到了这个错误:
parsererror SyntaxError: Unexpected token < in JSON at position 0
at parse (<anonymous>)
at Qb (jquery.min.js:4)
at A (jquery.min.js:4)
at XMLHttpRequest.<anonymous> (jquery.min.js:4)
干杯
答案 0 :(得分:-1)
你的ajax.php应该是这样的
<?php
foreach ($messages as $message) {
$from = $message['contact_value'];
$text = $message['message'];
$date = $message['date'];
$num = $user['phone_number'];
echo json_encode(array("from"=>$from, "text"=>$text,"date"=>$date,"num"=>$num));
?>
如果你真的想要引号,那么请使用''(单引号)。
和javascript文件。
success: function (response) {
var success = $.parseJSON(response);
$(".messages-table").append("<tr><th>"+success.from+"</th><th>"+success.text+"</th><th>"+success.date+"</th><th>"+success.num+"</th></tr>");
}
我认为如果每次都调用doAjax函数,则不需要使用forech循环。