javascript - AJAX 返回代码 200 但引发错误

标签 javascript jquery ajax

HTML 部分:

<a href="javascript:void(0)" onclick="$.join_group(<?=$USER_ID?>, <?=$groups[$i]["id"]?>)"><?=$language["join"]?></a>

Js部分:

  $.join_group = function(user_id, group_id) {
      var input = "user_id=" + user_id + "&group_id=" + group_id + "&mode=join_group";
      alert(input);
      $.ajax({
         url : "handlers/H_GroupHandler.php",
         data : input,
         type : "post",
         dataType : "json",
         success : function (response) {
             if (!response.error) {
                 alert("asds");
             } else {
                 alert("asds");
             }
         },
         error: function(jqXHR,error, errorThrown) {  
           if(jqXHR.status&&jqXHR.status==400){
                alert(jqXHR.responseText); 
           }else{
               alert(jqXHR.status);
               alert("Something went wrong");
           }
      }
      });
      return false;
  }

H_GroupHandler:

$mode = $_POST["mode"];
if ($mode == "join_group") {
        $user_id = $_POST["user_id"];
        $group_id = $_POST["group_id"];


        $response["error"] = true;
        $response["error_text"] = "Error !";
        echo json_encode($response);
}

Remote Address:[::1]:80 Request URL:http://localhost/xxx/handlers/H_GroupHandler.php Request Method:POST Status Code:200 OK

它返回 200,但 ajax 触发了错误函数并发生了错误。

在浏览器中表单数据:

用户 ID:1

group_id:6

模式:加入组

最佳答案

你的Ajax工作正常,但正如你所看到的,你使用了dataType:“json”并且你的php文件返回字符串,这就是错误 block 执行的原因

echo之前添加 header 您的json将解决您的问题

`header('Content-Type: application/json');`
echo json_encode($response);

关于javascript - AJAX 返回代码 200 但引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33493208/

相关文章:

javascript - 将鼠标悬停在 div 上时,多个图像取决于鼠标位置

javascript - 在 JavaScript/jQuery 中使用 AJAX 后重定向 URL

javascript - 如何存储变量的静态值以保持 JavaScript 中的更改

javascript - jQuery 遍历

javascript - 猫头鹰轮播下一张幻灯片 View

javascript - 卡住下一个和上一个事件

javascript - SyntaxError : JSON. 解析:AJAX 调用中的意外字符错误

javascript - 使用 AJAX 更改 CSS 样式且无需重新加载

javascript - Angular JS过滤器: Why does this remove other LIKE options?

javascript - 什么取代了 "with"?