使用Javascript和jOuery访问JSON响应时出错

时间:2013-04-04 13:12:21

标签: java javascript ajax json

我有一个Web服务,它返回一个String Of JSON响应。当我尝试使用$ .ajax函数在我的网页中访问该响应时,它总是生成错误而没有任何响应终止..有人可以帮助我并告诉我们下面的代码中有什么错误。

function getdata() {

        alert("start");
       $.ajax({
        type: "POST",
        data: "{'value':'10'}",
        url: "http://localhost:8080/RESTExample/parameter_url",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
                    alert("received "+data);
            },
        error: function (data) {
                    alert("error is "+data);
            }
});
        alert("end");
    }

现在我有一个URL,提供直接访问的JSON响应**

  

http://coenraets.org/apps/directory/services/getemployees.php

**

我试图在我的JSP页面中以

的形式访问此数据
    <script language="javascript">

  $(document).ready(function()
   {
   $('#login').click(function(event){

    event.preventDefault();
    localStorage['serviceURL'] = "http://coenraets.org/apps/directory/services/getemployees.php";
    var serviceURL = localStorage['serviceURL'];
      alert("start");

        $.ajax({
    dataType: "jsonp",
    url: serviceURL,
    success :function SucceedFunc(data) {
            alert("success");
            console.log(data);
        },
    error : function(data, textStatus, errorThrown) {
    alert("error");
    console.log(data);
        }
}).done(function ( data ) {
  console.log(data);
});

    });
   });

</script>

<div class="main_div">



<div class="loginform">
<form>   
    <div class="login_btn">
    <input type="submit" class="login" value="Login" id="login"/>
    </div>
</form>
</div>
</div>

给出错误....现在任何人都可以帮助我访问这些数据.... PLS ......

3 个答案:

答案 0 :(得分:2)

$.ajax({
    dataType: "jsonp",
    url: serviceURL
}).done(function ( data ) {
  console.log(data);
});

试试这个

答案 1 :(得分:1)

简单来说:浏览器不允许来自域(例如something.com)的JavaScript访问来自其他域的任何数据(例如,something-different.com)。这是一个“同源政策”。

有一些方法可以避免这种情况。最简单的方法是使用所提到的jsonp,我引用Nisanth Sojan:

$.ajax({
    dataType: "jsonp",
    url: serviceURL
}).done(function ( data ) {
    console.log(data);
});

但是jsonp有一些其他限制,例如。你不能做任何发布请求。执行此操作的一般方法是在请求所服务的服务器上支持CORS(因为它是有风险的)。

来源&amp;更多信息:http://webadvent.org/2011/cross-origin-ajax-with-cors-by-david-walsh

答案 2 :(得分:0)

您必须循环播放this fiddle

等每个项目
$.ajax({
   dataType:'jsonp',
   url:"http://coenraets.org/apps/directory/services/getemployees.php",
   success : function(data) {
        $(data.items).each(function(index, employee) {
            $('#employees').append($('<div />').text(employee.firstName));
        });
   }
 });

});