Javascript 无法使用Jquery从Api接收Json响应
我是Javasript的初学者。现在我尝试向我的php服务器发出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,但是我没有从浏览器得到任何响应
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我看到了您的更新,但您没有将错误传递到警报。。尝试打印thafail
函数参数以了解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
);