jsonp实现ajax,jsonp实现ajax跨域访问配置

首先来写login.html

html>

prictice.html

用户名:

密码:

登陆

注册

版本

然后来看下login.js

$(function(){

$.support.cors = true;

$.mobile.allowCrossDomainPages=true;

$('#login').click(function(){

var userName = $('#username').val();

var passwd = $('#password').val();

//alert(userName + " " + passwd);

$.ajax({

type:"POST",

url:"http://127。0.0.1:8080/sfw/testjsonp",

dataType:"jsonp",//这里是重点

jsonp:"callback",//这里是重点

jsonpCallback : "handler",//这里是重点

//context:this,

contentType:"application/json;charset=UTF-8",

data:{username:userName,passwd:passwd},

async:true,

success:function(data){

alert("login success!");

//$(this).alert("3333");

}

});

function handler(data){ //回调函数

alert("good");

}

})

})

再看下struts配置

最后看下action

package cn.framework.action;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

public class TestJsonp extends BaseAction {

private static final long serialVersionUID = 1L;

public String testAction(){

HttpServletRequest request = ServletActionContext.getRequest();

HttpServletResponse res = ServletActionContext.getResponse();

String username = request.getParameter("username");

String password = request.getParameter("passwd");

String func = request.getParameter("callback");

System.out.println("username:"+username+" password:" +password);

StringBuffer s = new StringBuffer();

s.append(func);

s.append("({\"username\":\"");

s.append(username);

s.append("\",");

s.append("\"password\":\"");

s.append(password);

s.append("\"})");

try {

res.getWriter().write(s.toString());

res.getWriter().flush();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

}

总结:有二点需要注意,一个是js中的dataType,还有jsonp的属性。另一个是返回的json数据的格式是一个带json数据的方法名handler({"username":"aaa","password","bbb"})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值