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

Javascript 无法使用Jquery从Api接收Json响应,javascript,jquery,ajax,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,但是我没有从浏览器得到任何响应

我是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>
我需要知道的

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

2) 如何测试我是否成功获得响应?是否可以打印出来进行测试

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

谢谢你提前通知

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

有人能告诉我正确的方法吗

更新

在遵循@Mendax answer之后,我在console.log中得到了这个响应。这是什么意思

错误

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

请尝试此方法在jquery中发送请求并获取响应。 这里的表单是表单方法,您的输入控件处于活动状态,电子邮件/密码是文本框id。 在传递参数时,还要确保使用的Url是响应

 $.post( "http://localhost/abc/v1/login", {email:form.email.value, 
  password:form.password.value })
 .done(function( data ) {
   alert(JSON.stringify(data));
 });

尝试以
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()


  • 如果您的响应是
    json
    格式,则将
    json
    参数传入

    $.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);
    },'json');// pass json parameter here
    

    另外,请检查浏览器控制台,确保您的AJAX请求正确,并且服务器端没有错误。

    在$.post方法中传递
    数据类型
    ,如:

                   $.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);
                        },'json'// Data type to output json format
                    );
    

    这将在F12开发模式下工作,检查控制台错误。我想这是一个跨域的问题。添加
    fail
    函数,这样您就可以捕捉错误。我检查了控制台,只是空白,上面没有任何单词是的,我认为您有错误,并且您没有编写fail函数。请检查fail Function使用rest客户端测试您的api我在postman中测试,我的api正在工作,但我使用了您的代码,并提交了它,它在Browser中仍然没有响应,您的代码有响应,但警报未定义。原因是什么?很好,至少我得到了一些响应。我更新了我的问题,因为我不知道这对我来说意味着什么response@ken我看到了您的更新,但您没有将
    错误传递到警报。。尝试打印tha
    fail
    函数参数以了解issue@ken你也没有像在我的回答中那样尝试对你发送的数据进行字符串化。我现在做了什么改变
    $.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);
    },'json');// pass json parameter here
    
                   $.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);
                        },'json'// Data type to output json format
                    );