在javascript

时间:2017-04-03 14:55:12

标签: javascript php

我有这个代码可以获得两个texbox的输入(stud_firstname和stud_lastname):

function chkstudname(val)
  {
    var firstName = $("input[name=stud_firstname]").val();
    var lastName = $("input[name=stud_lastname]").val();
      $.ajax ({
        type:"POST",
        url:"check_stud_name.php",
        data:'fname='+firstName+'lname='+lastName,
        success: function(data){
          $("#msg_stud_name").html(data);
        }
      });
  }

我想以某种方式生成这样的网址:

check_stud_name.php?fname=Bill&lname=GATES

我可以在php中完成,但javascipt不是我的事情,所以我不知道该怎么做。上面的代码有效但只分配了fnamelname未知。

因此,如果我将BILL输入到名字框,并将GATES输入到姓氏框,则给出此PHP代码:

$fname = $_GET[fname];
$lname= $_GET['lname'];

echo $fname."<separator to check if it works>".$lname;

输出是:

BILLlname=GATES<separator to check if it works>

并发出错误消息,指出未找到$_GET['lname']。因此,可以安全地假设fname的值为BILLlname=GATES且&#34; lname = ...&#34;代码无法正常工作,因为它与&#34; fname = ...&#34;

合并



如何在网址中放入两个变量/参数并使lname=...有效?我尝试将&放在它们之间,但它根本不起作用..

2 个答案:

答案 0 :(得分:1)

非常简单,只需添加&

即可

变化

data:'fname='+firstName+'lname='+lastName,

data:'fname='+firstName+'&lname='+lastName,

答案 1 :(得分:0)

分离器

URL编码表单数据是一组以&个字符分隔的键=值对。您需要实际包含&个字符。

逃逸

某些字符(例如=&)在网址中具有特殊含义。

在将用户输入添加到URL之前,您应该转义用户输入。

POST请求

jQuery在请求正文中为POST请求添加data参数的值。

如果要使用查询字符串发出POST请求,则需要将其明确地放在URL的查询字符串中。

代码

$.ajax ({
    type: "POST",
    url:"check_stud_name.php?fname=" + encodeURIComponent(firstName) + "?lname=" + encodeURIComponent(lastName),
    // etc

或者:GET

看起来您正在尝试获取数据,因此您应该发出GET请求而不是POST请求。

你可以将jQuery的data字段传递给一个对象并让jQuery对其进行转义并为你形成查询字符串:

$.ajax ({
    type: "GET",
    url: "check_stud_name.php",
    data: {
        fname: firstName,
        lname: lastName
    }
    // etc