JQuery:将GET URL转换为POST
JQuery: Convert GET URL to POST
在jQuery中将GET URL字符串转换为POST的最简单方法是什么?
例如,我想要链接的参数
<a href="/somepage?x=1&y=3" id="postlink">link</a>
如果javascript被激活,则以POST onclick的形式提交。没有AJAX,只是正常的表单提交。
有什么想法吗?
谢谢,汉内斯。
我刚刚写了这段代码,请检查一下,可能会有帮助吗http://jsfiddle.net/AEwxt/
$('#postlink').click(function() {
var p = $(this).attr('href').split('?');
var action = p[0];
var params = p[1].split('&');
var form = $(document.createElement('form')).attr('action', action).attr('method','post');
$('body').append(form);
for (var i in params) {
var tmp= params[i].split('=');
var key = tmp[0], value = tmp[1];
$(document.createElement('input')).attr('type', 'hidden').attr('name', key).attr('value', value).appendTo(form);
}
$(form).submit();
return false;
});
演示:http://jsfiddle.net/w5WA6/
function getUrlVars(_url)
{
var vars = [], hash;
var hashes = _url.slice(_url.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
var arVars = getUrlVars($("#test").attr("href"));
for(var i=0;i<arVars.length;i++){
//put var in input for submition you can change type by `hidden`
$("#myForm").append("<input type='text' value='"+arVars[arVars[i]]+"' name='"+arVars[i]+"'/>");
}
稍微修改了Sergey的代码,这样当用户"悬停"在链接上时,它就不会显示get请求。
链接:
<a href="#" postURL="/tpl/schRosterSearchSubmit.do?searchReci.uniqueId=&searchReci.studentId=&searchReci.schoolId=3205&searchReci.name.firstName=&searchReci.name.lastName=&searchReci.gender=&searchReci.rdobDay=&searchReci.rdobMonth=&searchReci.rdobYear=&searchReci.rssn1=&searchReci.rssn2=&searchReci.rssn3=&searchReci.phoneNumber=&searchReci.citzOrResAlien=&searchReci.country.isoCountryCode=&searchReci.address.street1=&searchReci.address.street2=&searchReci.address.city=&searchReci.address.state=&searchReci.address.zip=&searchReci.address.zipExt=&searchReci.parentN.firstName=&searchReci.parentN.lastName=&searchReci.parentEmail=&searchReci.parentMAddr.street1=&searchReci.parentMAddr.street2=&searchReci.parentMAddr.city=&searchReci.parentMAddr.state=&searchReci.parentMAddr.zip=&searchReci.parentMAddr.zipExt=&searchReci.parentPAddr.street1=&searchReci.parentPAddr.street2=&searchReci.parentPAddr.city=&searchReci.parentPAddr.state=&searchReci.parentPAddr.zip=&searchReci.parentPAddr.zipExt=&searchReci.pdobDay=&searchReci.pdobMonth=&searchReci.pdobYear=&searchReci.pssn1=&searchReci.pssn2=&searchReci.pssn3=&searchReci.parentCitzOrResAlien=&searchReci.parentCountry.isoCountryCode=&searchReci.addrUpdInd=&searchReci.inactiveDtDay=&searchReci.inactiveDtMonth=&searchReci.inactiveDtYear=&searchReci.ncoaUpdInd=&searchReci.badAddrInd=&branding=upromise&acct=XXXX&schRosterPager.offset=50" class="rnavLink">2nd Page results</a>
转换为POST onclick:
<script type="text/javascript">
$(document).ready(function() {
$('.rnavLink').click(function() {
var p = $(this).attr('postURL').split('?');
var action = p[0];
var params = p[1].split('&');
var form = $('<form/>', {action:action, method:'post'}).appendTo('body');
for (var i in params) {
var tmp = params[i].split('=');
var key = tmp[0], value = tmp[1];
$('<input/>', {type:'hidden', name:key, value:value}).appendTo(form);
}
$(form).submit();
return false;
});
});
您可以使用HTML发送表单输入<form method="POST">
虽然我不完全确定这背后的原理,但如果必须强制执行javascript部分,只需在表单中加上<使用<noscript>标记。
相关文章:
- 将$.post转换为$.ajax
- 如何将POST表单按钮转换为链接
- 将c#get方法a转换为post方法,从javascript调用
- 如何将AJAX POST转换为HTTP POST,以便在单击时发布
- 在 JS 中将 GET 转换为 POST
- 如何将 ajax POST 转换为 php
- 使用Facebook Graph API和JavaScript上传照片:将画布图像转换为多部分/表单数据作为POST正文
- 将JSON响应转换为POST请求的javascript数组
- jQuery Post中的错误:无法转换JavaScript参数
- JQuery:将GET URL转换为POST
- 通过json到Ajax的post将post转换回PHP
- 当通过本地apache发送请求时,POST被转换为GET
- PHP,将jQuery对象数组转换为PHP数组,$.post和JSON.stringify
- 将Form Post转换为Querystring
- 将JSON HTTP POST请求转换为Java对象时出错
- 如何转换jquery's$.post()转换为纯javascript
- 通过ajax将参数转换为get/post方法的phpxml
- 如何将dropbox API v2 POST HTTP请求转换为jQuery$.ajax
- 将.post转换为等效的.ajax
- 如何将多维json转换为嵌套的POST字段