如何使用URL中的查询字符串值填充文本框

时间:2017-03-24 15:07:39

标签: javascript c# jquery query-string

我有一个简单的Window Forms应用程序,它打开一个带有set参数的网页。

该链接将用户发送到包含2个文本框字段和提交按钮的页面。

我正在尝试自动执行此过程,因此它会抓取参数值并将其放入文本框,然后单击“提交”。

这是我目前的Windows窗体代码:

using System;
using System.Windows.Forms;
using System.Diagnostics;

namespace WindowsFormsApplication1 {

public partial class Form1 : Form {

    public Form1() {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e) {
        libLink.Links.Remove(libLink.Links[0]);
        libLink.Links.Add(0, libLink.Text.Length,
            "http://www.example.com/?UserName=value1&FirstName=value2");
    }

    private void libLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
        ProcessStartInfo sInfo = new ProcessStartInfo(e.Link.LinkData.ToString());
        Process.Start(sInfo);
    }
}
}

如何创建一个脚本,使用URL中的参数填充两个文本框字段,然后提交表单?

这是我的HTML页面:

  <form action="/send" method="post" novalidate="novalidate">
      <input class="form-control" data-val="true" data-val-UserName="Wrong username" data-val-required="Enter a valid Username" id="Username" name="Username" placeholder="Username" type="text" value="">
      <input class="form-control" id="FirstName" name="FirstName" placeholder="First Name" type="text" value="">   
      <button type="submit">Sign In</button>
  </form>

编码相当新,所以我尽量保持代码的简单。

我查看了QueryStringsJavaScriptJquery等可能的方法,但我不确定如何解决这个问题。

1 个答案:

答案 0 :(得分:-1)

有几种方法可以做到这一点,但我会给你一个基本的演绎我将如何在javascript中用一些JQuery来做。

我们的网址是变量:

var url = "http://www.example.com/?UserName=value1&FirstName=value2"
var params_string = url.split("?")[1] //UserName=value1&FirstName=value2

所以首先我们将字符串拆分成如上所示的列表,该列表返回由“?”分隔的项目列表。字符,但我们只需要第二个项目(在索引1处),所以我们将[1]添加到最后只存储该位。

然后我们再次将其拆分以获得各个参数。

var params_string_list = params_string.split("&")
["UserName=value1","FirstName=value2"]

返回上面的列表,再次需要打破它,我会把它变成一个像这样的对象:

var params = {}
for(var i =0;i < params_string_list.length;i++ ){
     var temp = params_string_list[i].split("=") // looks like ["UserName","value1"]
     params[temp[0]]= temp[1]
} //params now looks like  {"UserName":"value1","FirstName":"value2"}

因为这样可以轻松访问和使用。 然后我们可以执行以下操作来设置表单中的值:

if(params.UserName){
    $('#Username').val( param.UserName );
}
if(params.FirstName){
    $('#FirstName').val( param.FirstName );
}

如果要在那里检查值是否存在于对象中,那么我们就不会意外地将值发送到“undefined”。

希望这有帮助。