javascript - 无法使用 Jquery 从 Api 接收 Json 响应

标签 javascript jquery ajax

我是 Javasript 的初学者。现在我尝试向我的 php 服务器发出 http 请求,该请求将返回如下 Json 响应:

{
  "error": false,
  "user_id": 1,
  "user": {
    "username": "abc",
    "email": "abc@gmail.com",
    "http://192.168.1.1/abc/v1/profilepic/defaultmale.jpg"
  }
}

我进行了如下所示的 Ajax 调用,但我没有从浏览器得到任何响应,而且正如我所见,我没有执行任何操作。

到目前为止我尝试过的

   <script type="text/javascript">

    $(document).ready(function () {
        $("#loginBtn").click(function () {

            var vEmail = $("#email").val();
            var vPassword = $("#password").val();

            if(vEmail ==='' &&vPassword === ''){
                alert("please enter email and password");
            }else if(vEmail !== '' && vPassword===''){
                alert("password required");
            }else if(vEmail ==='' && vPassword !== ''){
                alert("email required");
            }else{

                $.post("http://localhost/abc/v1/login",
                    {email:vEmail, password:vPassword},
                    function(response){ // Required Callback Function
                        //"response" receives - whatever written in echo of above PHP script.
                        alert(response);
                    }
                );


            }

        });
    });
</script>

我无法在浏览器中收到alert,我也尝试了console.log(response),我也无法在我的inspect element中看到> 在 Google Chrome 中。

我也尝试过如下,但也没有运气

var obj = $.parseJson(response);
alert(obj['user_id']);

我需要知道什么

1) 这是通过 Jquery 发出 Http 请求的正确方法吗?如果不是,正确的方法是什么?

2) 如何测试是否成功收到响应?可以打印出来用于测试目的吗?

3)如何使用Jquery正确解析Json?

感谢您的提前。

更新 我也添加了失败功能,但是当我填写电子邮件密码时,仍然没有任何反应(意味着浏览器只是刷新,没有警报,控制台日志只是空白) .

$.post("http://localhost/abc/v1/login",
                {email:vEmail, password:vPassword},
                function(response,status){ // Required Callback Function
                    //"response" receives - whatever written in echo of above PHP script.
                    alert(JSON.stringify(response));

                },fail(function () {
                    alert("failed");
                })
            );

有人可以告诉我正确的方法吗?

更新

按照 @Mendax 回答后,我在 console.log 中得到了带有此响应的响应。这是什么意思?

错误

Object {readyState: 0, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}

最佳答案

尝试将数据作为 JSON 字符串发送。还添加一个 fail 回调来捕获错误

    $.post("http://localhost/abc/v1/login",
        JSON.stringify({email:vEmail, password:vPassword}),
        function(response){ // Required Callback Function
            //"response" receives - whatever written in echo of above PHP script.
            console.log(response);
        }, "json").fail(function(error) { console.log(error) });;
  • 要测试是否收到响应,您可以访问控制台中的 newtwork 选项卡,或者添加 fail 回调会有所帮助。

  • 要解析 JSON,您可以使用 JSON.parse()

  • 关于javascript - 无法使用 Jquery 从 Api 接收 Json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43714657/

    相关文章:

    javascript - 如何在 javascript 中深度嵌套的对象成员上使用 Ramda 的 omit() 函数

    javascript - 推送到 Heroku 时 Node.js 应用程序无法构建

    javascript - parseInt() = 未定义

    javascript - 更改图表的宽度和高度(Echarts库)

    css - 多个微调器,无需使用多个功能

    javascript - 将 ajax 响应分配给全局变量

    javascript - 使用按钮单击 react 渲染特定数据

    javascript - 嗨,我有 jquery 动态追加标签错误

    javascript - Ajax 调用工作很慢。可以让它更快吗?

    javascript - 使用两个 Ajax 变量验证表单