request参数-jsonp跨域访问Struts2后台,获取到的数据没有用callback参数包裹是怎么回事啊?

问题描述

jsonp跨域访问Struts2后台,获取到的数据没有用callback参数包裹是怎么回事啊?

前端代码:

 $.ajax({
            url:'http://localhost:8080/OA/json/json.action?orgid=aaa&code=00002',
            dataType:'jsonp',
            type:"GET",
            dataFilter:function(json,me){
                alert("dataFiter:"+json);
            },
            contentType : "application/json-rpc",
            jsonpCallback : "call",
            success : function(response,status,xhr){
                alert(response);
            },
            error : function(xhr,errText,errStatus){
                alert("error");
            }
        });

后台配置:

 <package name="json" namespace="/json" extends="json-default">
        <action name="json" class="jsonTest" method="shareInfo">
            <interceptor-ref name="json"></interceptor-ref>
            <result type ="json" name="success">
                <param name="noCache">true</param>
                <param name="contentType">text/html</param>
            </result>
        </action>
    </package>

老是提示:Uncaught SyntaxError: Unexpected token :

从network中看到的response数据是json格式的,在线解析也成功了。

解决方案

jsonp (String) : 在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,比如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。

你配置的回调函数名称配置错了,是jsonp,不是jsonpCallback
jsonpCallback : "call",
==>
jsonp : "call",

java就不懂了,jsonp你一定要获取到回调函数名称后输出类型 回调函数名称(数据),其他格式会出错

时间: 2024-12-31 02:13:16

request参数-jsonp跨域访问Struts2后台,获取到的数据没有用callback参数包裹是怎么回事啊?的相关文章

AJax与Jsonp跨域访问问题小结_AJAX相关

####JavaScript的AJax AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML) 设计AJax使用的一种重要技术是XMLHttpRequest对象. 创建XMLHttpRequest对象的方式: xmlhttp = new ActiveObject("Microsoft.XMLHTTP"); // IE浏览器支持的创建方式 xmlhttp = new XMLHTTPRequest(); // F

浅谈JQuery+ajax+jsonp 跨域访问_jquery

Jsonp(JSON with Padding)是资料格式 json 的一种"使用模式",可以让网页从别的网域获取资料. 一. 客户端 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv=&q

如何在ASP.NET MVC 3 中利用Jsonp跨域访问

在信息系统开发的时,根据相关业务逻辑难免会多系统之间互相登录.一般情况下我们需要在多系统之间使用多个用户名和密码.这样客户就需要在多个系统之间重复登陆.每次登录都需要输入用户名和密码.最近比较流行的就是OAuth.新浪微博这个开放系统做的就很好.但OAuth并非本文讨论范畴.这里主要讨论jQuery1.5 jsonp 在Asp.net MVC3 中的应用. 本文应用场景: 假设您的开发团队欲为某集团公司开发一整套信息管理系统,目前首要开发的就是一套订单系统和一套内部OA系统.前提是这两套系统使用

AJax与Jsonp跨域访问问题小结

####JavaScript的AJax AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML) 设计AJax使用的一种重要技术是XMLHttpRequest对象. 创建XMLHttpRequest对象的方式: xmlhttp = new ActiveObject("Microsoft.XMLHTTP"); // IE浏览器支持的创建方式 xmlhttp = new XMLHTTPRequest(); // F

JSONP 跨域访问代理API-yahooapis实现代码_jquery

你是否遇到了想利用AJAX访问一些公网API,但是你又不想建立自己的代理服务,因为有时我根本就没打算涉及服务端任何代码,但是讨厌的浏览器的同源策略,阻止了我们的ajax调用. 比如我想访问一个天气的restfull api,如果我直接去GET: 复制代码 代码如下: $.get("http://m.weather.com.cn/data/101010100.html");  看见这问题相信大家都不会陌生,也会很自然的得到解决方案,但是我这里真的不想touch任何服务端代码,用jsonp

jquery下利用jsonp跨域访问实现方法_jquery

复制代码 代码如下: $.ajax({ async:false, url: '', // 跨域URL type: 'GET', dataType: 'jsonp', jsonp: 'jsoncallback', //默认callback data: mydata, //请求数据 timeout: 5000, beforeSend: function(){ //jsonp 方式此方法不被触发.原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了 }, success: fu

jsonp跨域访问实现方法

这种方式其实是上例$.ajax({..}) 的一种高级封装. 在服务端通过获得callback参数(如:网页特效onp*****)得到jquery端随后要回调的 然后返回类似:"网页特效onp*****("+要返回的json数组+")"; jquery就会通过回调方法动态加载调用这个:jsonp*****(json数组); 这样就达到了跨域数据交换的目的. jsonp是一种脚本注入(script injection)行为,所以也有一定的安全隐患 $.ajax({ a

用JSONP实现的跨域访问的解决方案

跨域访问一直是困扰很多开发者的问题之一.因为涉及到安全性问题,所以跨域访问默认是不可以进行的,否则假设今天我写了一段js去更改google的图标,明天他写了一段代码去吧google首页的文字全部变成梵文,那还得了? 首先,讲下什么是相同的域.域是这样定义的,协议名+host名+端口号,只有这3个都一样,才能说是同样的域,同样的域里面的访问不受到同源策略限制,你可以用你的js代码任意的去操作资源,但是不同域你就不能这样做了. 解决跨域访问有很多方法,最常见的一种"单向"跨域访问方式是用J

浅析JSONP解决Ajax跨域访问问题的思路详解_AJAX相关

前几天,工作上有一新需求,需要前端web页面异步调用后台的Webservice方法返回信息.实现方法有多种,本例采用jQuery+Ajax,完成后,在本地调试了一切ok,但是部署到服务器上以后就出现问题了,后台服务调用没有响应,怎么回事?代码没怎么改动,唯一修改的地方就是jQuery的ajax方法中的url地址.难道是这里的问题,经过检查和调试,发现原来是同源策略在作怪,我们知道,JavaScript或jQuery是在Web前端开发中经常使用的动态脚本技术.在JavaScript中,有一个很重要