Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jsonp回调函数不工作_Javascript_Jquery_Json_Jsonp - Fatal编程技术网

Javascript Jsonp回调函数不工作

Javascript Jsonp回调函数不工作,javascript,jquery,json,jsonp,Javascript,Jquery,Json,Jsonp,我正在Web服务上做一个示例,我想使用jsonp回调函数返回json。 我已经在服务器端实现了spring @GET @Path("/jsonp") @Produces("application/x-javascript") public JSONWithPadding sayJsonpHello() { Person person = new Person(); person.setID(1); person.setName("go

我正在Web服务上做一个示例,我想使用
jsonp
回调函数返回json。 我已经在服务器端实现了spring

    @GET
    @Path("/jsonp")
    @Produces("application/x-javascript")
    public JSONWithPadding sayJsonpHello()
   {
    Person person = new Person();
    person.setID(1);
    person.setName("google");
    System.out.println("jsonp hello");
    return new JSONWithPadding(person,"callbackFunction");
    }
这是我的密码

$("#button5").click(function() {
    $.getJSON("....webServices/rest/hello/jsonp?callback=?",                   
       function(result){
         //response data are now in the result variable
         alert("jsonp");//NOT printing
    });
});
这是我的服务器端代码

@GET
@Path("/jsonp")
@Produces(MediaType.APPLICATION_JSON)
public Person sayJsonpHello()
{
    Person person = new Person();
    person.setID(1);
    person.setName("person1");
    System.out.println("jsonp hello");
    return person;
}
当我在chrome上的rest客户端中执行url时,它会显示
“意外令牌c”

我可以返回json,但不能返回jsonp…这是因为回调函数不起作用。 我已经通过stackoverflow中的其他链接,但它没有帮助

是否需要在服务器端设置任何配置

这是我尝试过的另一个选择

  $("#button5").click(function () {
        alert("button5");
        $.getJSON("....../webServices/rest/hello/jsonp?callback=callbackFunction",     function (result) {
            alert("jsonp"); //NOT printing
        }).fail(function() {
            console.log(arguments);
        });
    });

    function callbackFunction()
    {
        alert("call back function");
    }

The corresponding code on server-side

@GET
@Path("/jsonp")
@Produces(MediaType.APPLICATION_JSON)
public String  sayJsonpHello()
{
    Person person = new Person();
    person.setID(1);
    person.setName("shalini");
    System.out.println("jsonp hello");
    return "callbackFunction("+person+")";
}
更新-回答我的问题(解决问题后发布) 我的错误是应该使用@products(“application/x-javascript”)而不是@products(MediaType.application_JSON)。reurn类型应为JSONWithPadding,而不是string

服务器端

    @GET
    @Path("/jsonp")
    @Produces("application/x-javascript")
    public JSONWithPadding sayJsonpHello()
   {
    Person person = new Person();
    person.setID(1);
    person.setName("google");
    System.out.println("jsonp hello");
    return new JSONWithPadding(person,"callbackFunction");
    }
用户界面

回调函数应该是可见的。那就是注意范围

 <script type="text/javascript">
  function callbackFunction() 
 {
    alert("call back function");
 }
 </script>

函数callbackFunction()
{
警报(“回拨功能”);
}

像这样尝试->看看控制台(F12)中会出现什么,当我第二次单击按钮时,控制台上会显示[Object,“parsererror”,SyntaxError:Unexpected token:]。第一次单击时没有错误。这意味着您没有返回有效的JSONP。我已经添加了服务器端代码。请检查。我不知道服务器端代码会给出什么输出。查看浏览器中“开发人员工具”的“网络”选项卡。向我们展示Ajax请求响应中的数据。