Javascript Jsonp回调函数不工作
我正在Web服务上做一个示例,我想使用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
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请求响应中的数据。