您现在的位置:首页 >> 前端 >> 内容

jQuery was not called 解决办法

时间:2017/6/29 10:10:00 点击:

  核心提示:jQuery was not called 解决办法1、今天写ajax请求时需要跨域请求,开始的代码如下:前端代码: var url = https://localhost:8080/wechat/w...

jQuery was not called 解决办法

1、今天写ajax请求时需要跨域请求,开始的代码如下:

前端代码:

 var url = "https://localhost:8080/wechat/wxtestsurvey/getTestList.dol";   
$.ajax({  
            url:url,   
            type:'POST',  
            cache:false,  
            data:{"openId":openid},   
            dataType: 'jsonp',  
            jsonp:'jsoncallback',  
            crossDomain: true,  
            success:function(data) {  
alert(data);  
 },  
error: function(XMLHttpRequest, textStatus, errorThrown){  
                //alert("系统维护中,请稍后再试!");  
                 alert(XMLHttpRequest.status);   // 200      
                 alert(textStatus);   // parsererror      
                 alert(errorThrown);  // SyntaxError: Unexpected end of input   
            }  
      });  

java代码:

       @RequestMapping(value = "/getTestList", produces = "application/json;charset=utf-8")  
@ResponseBody  
public String getTestList(String openId,HttpServletRequest request){  
      
    String jsoncallback = request.getParameter("jsoncallback");// 客户端请求参数  
    JSONObject json = new JSONObject();  
    HashMap<String,Object> map = new HashMap<String, Object>();  
    map.put("name", "nick");  
    map.put("age", "23");  
    map.put("sex", "M");  
    map.put("code", "0");  
    return jsoncallback + "("+JSONObject.fromObject(json)+")";  
}  

结果走的却是ajax的error,真的另外百思不得其解。弹出的结果如下:

Error: jQuery19105265967122703629_1498552272260 was not called

但是看响应确实返回的也是json字符串,结果如下:

"jQuery19108484969351256605_1498551586758({\"code\":\"0\",\"name\":\"nick\",\"age\":\"23\",\"sex\":\"M\"})"

嗯!你没有看错,这是真正的字符串。

去找度娘,找啊找啊找啊!整整找了一天,一天啊!

不过却没有结果。

网上有很多说法,但是他们说的我都符合要求,但就是没啥用;

第二天我重新再找,然后我看到了$.getJSON()也可以进行跨域请求,然后我试了,

结果还是一样,就是没有成功。

我整个人快奔溃了,一个这个问题弄了这么久;

慢慢我冷静下来,我想起了我以前也写过跨域的后台代码,但是好像和这个不一样,我开始翻以前写的代码,嗯!被我找到了,然后我试着用了,我对此并不抱很大的希望,真的!但是成功了,我勒个去,心中顿时十万草泥马飞奔而过。

更改过后的代码如下:

   @RequestMapping(value = "/getTestList", produces = "application/json;charset=utf-8")  
    @ResponseBody  
    public void getTestList(String openId,HttpServletRequest request,HttpServletResponse response){  
          
        String jsoncallback = request.getParameter("jsoncallback");// 客户端请求参数  
                String result = "";  
               JSONObject json = new JSONObject();  
        HashMap<String,Object> map = new HashMap<String, Object>();  
        map.put("name", "nick");  
        map.put("age", "23");  
        map.put("sex", "M");  
        map.put("code", "0");  
           result = jsoncallback + "("+JSONObject.fromObject(json)+")";  
        try {  
            response.getWriter().print(result);  
        } catch (IOException e) {  
            logger.info("异常:",e);  
        }  
    }  

其响应的数据如下:

jQuery19104063224993617034_1498551266153({"code":"0","name":"nick","age":"23","sex":"M"})

最后响应成功了!

我写这个一是为了给自己一个警告,二是希望能帮助遇到和我一样情况的朋友。

说说原因吧!

因为第一次返回它是一个纯真的字符串,不算是json字符串。

第二次返回的才是json字符串;

Tags:JQ QU UE ER 
作者:网络 来源:星辰海的专栏