gpt4 book ai didi

javascript - Ajax 调用不断失败,但没有错误

转载 作者:行者123 更新时间:2023-12-02 16:43:59 26 4
gpt4 key购买 nike

所以我的 ajax 调用工作正常,我在 Web 检查器中看到它旁边的绿灯,我看到发送回的正确参数和返回的 JSON 对象。但是,它会自动转到“错误”。我添加了一些错误处理,但已经没有想法了..

有人看到什么了吗?

Javascript

    function getMoreOlder(id) { 
$.ajax({
url: "getmore.php",
type : "POST",
dataType : "json",
data: {
postid : id,
type: "later",
},
success: function(response){
alert("Success");
for (var i=0; i<json.length; i++) {
// alert("Loop");
}
},
error: function(jqXHR,error, errorThrown){
if(jqXHR.status&&jqXHR.status==400){
alert(jqXHR.responseText);
}else{
alert("Something went wrong");
}
}
});
}

PHP 脚本

        $id = $_POST['postid'];
$type = $_POST['type'];

if($type == "later") {
$sql = "CALL `sp_BlogPosts_PageByPostID`('" . $id ."')";
$exec = mysqli_query($conn, $sql);

while($fetch = mysqli_fetch_assoc($exec)) {
$obj = array(
"PostID" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['PostID']))),
"Title" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['title']))),
"Content" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['content']))),
"Email" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['email']))),
"Username" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['username']))),
"Created_At" => stripslashes(substr(trim(mysqli_real_escape_string($conn, $fetch['created_at'])), 0 , 10)));
echo json_encode($obj);
}

使用示例

  <button onClick="getMoreOlder(1113);"> Load More Posts </button>

返回示例

    {"PostID":"1177","Title":"Off track","Content":"Hi This is a Post", "Email":"me@yahoo.com", "Username":"Abc123", "Created_At":"12-2-14"}

要点

  • 在 POST 中发送正确的变量

  • POST返回正确信息

  • 总是返回错误出了问题!

  • Web Inspector 显示 POST 请求的 200 代码

最佳答案

问题是你不断地回显 json_encode,这将导致无效的 json 输出。

例如:

{"PostID":"1177","Title":"Off track"}{"PostID":"1177","Title":"Off track"}

这是无效的 json。因此,将所有数据放入数组/对象中,然后 echo json_encode

$objArr = array();
while($fetch = mysqli_fetch_assoc($exec)) {
$objArr[] = array(
"PostID" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['PostID']))),
"Title" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['title']))),
"Content" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['content']))),
"Email" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['email']))),
"Username" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['username']))),
"Created_At" => stripslashes(substr(trim(mysqli_real_escape_string($conn, $fetch['created_at'])), 0 , 10))
);
}

echo json_encode($objArr);

或者按照评论中的建议一次性获取所有数据并回显

echo json_encode($exec->fetch_all(MYSQLI_ASSOC));

此外,您的 for 循环使用了错误的变量

for (var i=0; i<json.length; i++) {

应该是

for (var i=0; i<response.length; i++) {

关于javascript - Ajax 调用不断失败,但没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27261042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com