使用Javascript(AJAX)向Symfony2中的路由发送请求

时间:2013-12-06 15:39:05

标签: javascript php ajax json symfony

我有一个工作原型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 “状态文本”: “错误”}

我做错了什么,如何解决问题。请举个例子。

1 个答案:

答案 0 :(得分:2)

这是跨域请求问题。您需要将请求发送到您所在的域。这是一个浏览器级别的安全功能。

例如,如果您当前正在使用http://192.168.1.40,则只能在http://192.168.1.40上请求网址。这意味着来自http://192.168.1.39的请求(例如)无法正常工作