我有一个工作原型Symfony2 RESTful webservice,我仍在努力,我试图弄清楚客户端如何发送JSON或从Web服务中使用JSON数据。我只需要一个关于如何发送请求或向其发布数据的示例,我可以弄清楚其余部分。在我的浏览器中,如果我访问http://localhost/app_dev.php/users.json
,我会从数据库中获得JSON的正确结果,例如:
[{ “ID”:1, “用户名”: “保罗”, “username_canonical”: “保罗”, “电子邮件”: “a@ymail.com”, “email_canonical”: “a@ymail.com”,“启用“:真实的,” 盐 “:” 66r01" , “密码”: “UCxSG2v5uddROA0Tbs3pHp7AZ3VMV”, “LAST_LOGIN”: “2013-12-03T13:55:15-0500”, “锁定”:假的, “过期”:假的, “roles”:[],“credentials_expired”:false,“first_name”:“Monique”,“last_name”:“Apple”},......等。
所有其他路由都正常工作,我可以使用httpie或cURL获得相同的结果。现在,我想解决的问题是使用AJAX(以及后来的移动iOS,Android等)获取相同的JSON数据。这是我尝试使用AJAX JS:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$.ajax({
dataType: "json",
type: "GET",
url: "http://192.168.1.40/symfony/web/app_dev.php/users.json",
success: function (responseText)
{
alert("Request was successful, data received: " + responseText);
},
error: function (error) {
alert(JSON.stringify(error));
}
});
</script>
AJAX警告以下结果,表明错误: { “readyState的”:0 “responseText的”: “”, “状态”:0 “状态文本”: “错误”}
我做错了什么,如何解决问题。请举个例子。
答案 0 :(得分:2)
这是跨域请求问题。您需要将请求发送到您所在的域。这是一个浏览器级别的安全功能。
例如,如果您当前正在使用http://192.168.1.40
,则只能在http://192.168.1.40
上请求网址。这意味着来自http://192.168.1.39
的请求(例如)无法正常工作