有没有办法在没有提交的情况下检索来自网址的网址,有些方法可以通过HTTP Get模拟表单提交。 我的意思是这个例子
<from id="frm" method="POST" action='someaction'>
<input type='text' id='txt1' value='Hello'/>
<form>
我希望在不提交表格的情况下获得声音字符串
someaction?txt1=Hello
答案 0 :(得分:4)
以下是解决方案:
HTML:
<form id="frm" method="POST" action='someaction'>
<input type='text' id='txt1' value='Hello'/>
<input type='text' id='txt2' value='World'/>
</form>
Your GET URL is: <div id="url"></div>
Javascript(使用jQuery):
var url = $("#frm").attr("action") + "?";
var urlElements = [];
$("#frm").children().each(function(){
urlElements.push($(this).attr("id") + "=" + $(this).attr("value"));
});
urlElements = urlElements.join("&");
url += urlElements;
$("#url").html(url);
你可以在这里测试一下: http://jsfiddle.net/3S9db/
希望这有帮助:)
答案 1 :(得分:3)
像@adeneo说:
$('#frm').attr('action') + '?' + $('#frm').serialize()
答案 2 :(得分:2)
如果您正在谈论向服务器发送数据,可以通过AJAX进行。但实际上没有区别。您必须通过HTTP请求发送数据。
通过ajax表单和普通表单发送之间的唯一区别是,在ajax中页面不会被重新加载,但在普通表单提交中,页面将被重新加载。
还有其他方式,如{{3}也是。但他们所有人都在做同样的事情。您无法通过HTTP发送数据。
修改强>
但如果您想在客户端执行此操作,则可以执行以下操作:Node.JS
HTML:
<from id="frm" method="POST" action='someaction'>
<input type='text' id='txt1' value='Hello'/>
<input type='text' id='txt2' value='hi'/>
<input type='text' id='txt3' value='hoy'/>
<form>
<a class='link' href="">This is link1<a><br>
JS:
var str = $('#frm').attr('action')+'?';
$('#frm input[type="text"]').each(function(i , o) {
var val = $(this).val();
var id = $(this).attr('id');
if(i==0){
str += id+'='+val;
}
else{
str += '&'+id+'='+val;
}
});
$('a.link').attr('href', str);
答案 3 :(得分:0)
var myaction = $("#frm").attr( "action" );
var txt1 = $( "#txt1" ).val();
var mystr = myaction + "?txt1=" + txt1;
或
var mystr = $("#frm").attr( "action" ) + "?txt1=" + $( "#txt1" ).val();
然后
$.ajax({
url: mystr,
method: "GET"
}).done( function( data ){
//do whatever
});
更新:
有一些方法可以概括解决方案。一种方法是使用输入按钮调用函数并将其传递给表单,然后从表单id中获取表单数据。
function submitMyForm(frmId){
var i,
val,
elements = [],
ele = $( ":input", "#" + frmId );
// or
var i,
val,
elements = [],
ele = $( "#" + frmId + " > *" );
// returns an array of form elements for the form you specified
$.each( ele, function( i, obj ){
// skip the type = button, otherwise process form elements appropriately
val = { name: $( obj ).attr('name'), value: $ (obj ).val() });
elements.push(val);
// elements should now hold your form values in key/value object pairs.
}
}
<input type="button" value="Click" onclick="submitMyForm( $( this ).parent().attr('id')">
此解决方案假设您为每个表单都有一个id值。我没有检查代码是否有错误,但是这应该让你知道你需要做什么。 $ .each函数需要工作 - 你需要跳过处理按钮,如果你有复选框,你可能需要额外的代码来检测它们是否被检查等。