1、ajax返回如下form,用创建来模仿:
function post(url, params) {
var tempForm = document.createElement("form")
tempForm.action = url
tempForm.method = "post"
tempForm.style.display = "none"
for (var x in params) {
var opt = document.createElement("textarea")
opt.name = x
opt.value = params[x]
// alert(opt.name)
tempForm.appendChild(opt)
}
document.body.appendChild(tempForm)
tempForm.submit()
return tempForm
}
2、定义提交form的参数:
function postParamAndOpenWindow(urlAndQuery){
// 分割url和请求参数
var pos = urlAndQuery.indexOf('?')
var url = urlAndQuery.substring(0, pos)
var query = urlAndQuery.substring(pos + 1)
// 动态建立Form中的数据
var tempForm = document.getElementById('tmpForm')
tempForm.action = url
tempForm.method = "post"
var pairs = query.split("&")
for(var i = 0i <pairs.lengthi++) {
var pos = pairs[i].indexOf('=')
if (pos == -1) continue
var argname = pairs[i].substring(0, pos)
var value = pairs[i].substring(pos + 1)
var opt = document.createElement("textarea")
opt.name = argname
opt.value = value
tempForm.appendChild(opt)
}
tempForm.submitBtn.click()
return tempForm
}
3、在页面调用的方法:
<a href="#" onclick="postParamAndOpenWindow("http://www.xxx.com/login?username=xxx&password=yyy')">
ajax({url: "", //请求地址
type: "POST", //请求方式
data: { name: "super", age: 20 }, //请求参数
dataType: "json",
success: function (response, xml) {
// 此处放成功后执行的代码
},
fail: function (status) {
// 此处放失败后执行的代码
}
})
function ajax(options) {
options = options || {}
options.type = (options.type || "GET").toUpperCase()
options.dataType = options.dataType || "json"
var params = formatParams(options.data)
if (window.XMLHttpRequest) {
var xhr = new XMLHttpRequest()
} else {
var xhr = new ActiveXObject('Microsoft.XMLHTTP')
}
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
var status = xhr.status
if (status >= 200 && status < 300) {
options.success && options.success(xhr.responseText, xhr.responseXML)
} else {
options.fail && options.fail(status)
}
}
}
if (options.type == "GET") {
xhr.open("GET", options.url + "?" + params, true)
xhr.send(null)
} else if (options.type == "POST") {
xhr.open("POST", options.url, true)
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
xhr.send(params)
}
}
function formatParams(data) {
var arr = []
for (var name in data) {
arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name]))
}
arr.push(("v=" + Math.random()).replace("."))
return arr.join("&")
}