通过jquery从html表单中检索Http获取url

时间:2014-03-31 21:58:09

标签: jquery html forms

有没有办法在没有提交的情况下检索来自网址的网址,有些方法可以通过HTTP Get模拟表单提交。 我的意思是这个例子

<from id="frm" method="POST" action='someaction'>
  <input type='text' id='txt1' value='Hello'/>
<form>

我希望在不提交表格的情况下获得声音字符串

someaction?txt1=Hello

4 个答案:

答案 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函数需要工作 - 你需要跳过处理按钮,如果你有复选框,你可能需要额外的代码来检测它们是否被检查等。