JSONP回调函数无法正常工作

时间:2014-03-17 10:01:02

标签: javascript jquery json jsonp

我有jsonp回调功能。来自服务器的响应是未定义的。我不知道问题出在哪里。我为jsonp制作了RND。我正在发布代码

$.ajax({
         url : 'http://192.168.16.111:8081/MiddleWareUsman/androidServlet', 
         type: "GET",
         dataType: "jsonp",         
         crossDomain: true,
         async: false,
         data : {"fname": "chaaaaapiio","lname": "gya"},            
         jsonpCallback:  function(data, status){
            alert('callback');
            alert(data);
         },            
         success: function(data, status){
            alert('sucess');
         },
     error : function(xhr, ajaxOptions, thrownError) {          
         alert(thrownError);                        
         }
  });

Servlet代码是

        String a=request.getParameter("fname");
        String b=request.getParameter("lname");
        String cb=request.getParameter("callback");     
        response.getWriter().write(cb+"("+a+" "+b+")");

1 个答案:

答案 0 :(得分:1)

首先,当您要覆盖默认函数名称时,使用jsonpCallback。如果为其分配函数,则该函数的返回值应为名称。给它一个返回undefined的函数只是打破了事情。

从对象中删除jsonpCallback属性。处理success中的内容。

其次,该servlet代码将生成:

jQueryCallback23235(chaaaaapiio gya)

这不是有效的JavaScript。您需要有一个真正的JavaScript数据结构作为函数参数。

通常,JSONP响应由对象文字组成:

jQueryCallback23235({ "something": "chaaaaapiio", "something": "gya")

找到一个用于生成JSON的Java库,并使用它来生成parens的内容,不要试图手工编写JSON。