0

我有一个返回 JSON 响应字符串的 Web 服务。当我尝试使用 $.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......

4

3 回答 3

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

试试这个

于 2013-04-04T13:31:47.103 回答
1

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

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

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

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

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

于 2013-04-04T14:07:47.693 回答
0

你必须像这个小提琴一样循环每个项目

$.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));
        });
   }
 });

});

于 2013-04-04T13:21:11.063 回答