在使用Ajax时,如何将变量从JavaScript传递到PHP?

在使用Ajax时,如何将变量从JavaScript传递到PHP?,javascript,php,ajax,Javascript,Php,Ajax,首先,我知道以前有人问过这个问题。然而,在前面的所有示例中,提问者一直在使用Ajax,看起来像这样: $.ajax({ type: "POST", url: 'logtime.php', data: "userID=" + userID; }); 但是我不熟悉这种风格。我被教导发出Ajax请求的方式是使用以下形式的代码: var xhr = new XMLHttpRequest(); xhr.open("GET", "data.php"); xhr.send(); x

首先,我知道以前有人问过这个问题。然而,在前面的所有示例中,提问者一直在使用Ajax,看起来像这样:

$.ajax({
    type: "POST",
    url: 'logtime.php',
    data: "userID=" + userID;
});
但是我不熟悉这种风格。我被教导发出Ajax请求的方式是使用以下形式的代码:

var xhr = new XMLHttpRequest();
xhr.open("GET", "data.php");
xhr.send();

xhr.onreadystatechange = function() {
    if(xhr.readyState === 4) {
        //DEFINE CALLBACK FUNCTION
    }
}
那么,使用我熟悉的上述Ajax风格,应该如何将数据发送到服务器,由我的php文件data.php处理?我知道这与将其包含在
xhr.send()
括号中有关,但我不确定具体是如何做到的

另外,如果我们希望从数据库中检索数据,但必须向php提供一个变量,以便它从数据库中选择正确的数据,那么是否可以使用
GET
方法

最后,我所学到的Ajax方法与我提到的其他方法有什么不同,我经常看到这样的方法被提及

谢谢。

请尝试:

  `xhr.send('you_user=user&your_password=password');`
。。。或者可以使用更优雅的:

var d = new FormData();
d.append('you_user', 'user');
d.append('your_passowrd', 'password');
// ...
xhr.send(d);
请尝试:

  `xhr.send('you_user=user&your_password=password');`
。。。或者可以使用更优雅的:

var d = new FormData();
d.append('you_user', 'user');
d.append('your_passowrd', 'password');
// ...
xhr.send(d);

这有很多层次

HTTP支持许多具有不同用途的协议

简单地说,主要是GET和POST。GET用于请求数据,POST用于向服务器发送数据以进行更改

在GET请求中,要发送到服务器的任何数据通常使用查询字符串(使用编码)在URL中进行编码

在POST请求中,数据通常放在请求正文中,并且通常也会使用application/x-www-form-urlencoded。如果您想上载文件,则可以使用多部分/表单数据

使用此算法编码数据可能最简单:

(这不是最有效的方法,但它清楚地显示了步骤)

最后,我所学到的Ajax方法与我提到的其他方法有什么不同,我经常看到这样的方法被提及

它使用jQuery库(但不是一个很好的示例)。您可以看到它在何处手动构造查询字符串(
“userID=“+userID
),但它无法使用编码例程。使用jQuery时的安全方法是将对象传递给数据:

$.ajax({
    type: "POST",
    url: 'logtime.php',
    data: { userID: userID }
});

这有很多层次

HTTP支持许多具有不同用途的协议

简单地说,主要是GET和POST。GET用于请求数据,POST用于向服务器发送数据以更改某些内容

在GET请求中,要发送到服务器的任何数据通常使用查询字符串(使用编码)在URL中进行编码

在POST请求中,数据通常放在请求正文中,并且通常也会使用application/x-www-form-urlencoded。如果您想上载文件,则可以使用多部分/表单数据

使用此算法编码数据可能最简单:

(这不是最有效的方法,但它清楚地显示了步骤)

最后,我所学到的Ajax方法与我提到的其他方法有什么不同,我经常看到这样的方法被提及

它使用jQuery库(但不是一个很好的示例)。您可以看到它在何处手动构造查询字符串(
“userID=“+userID
),但它无法使用编码例程。使用jQuery时的安全方法是将对象传递给数据:

$.ajax({
    type: "POST",
    url: 'logtime.php',
    data: { userID: userID }
});

您拥有的是“原始”ajax。完美的功能性代码,但将所有浏览器差异、向后兼容性等留给您来处理。大多数人只使用jquery库,它将您拥有的所有内容封装到单个
$。get(…)
call。在幕后,一切都是一样的——一个普通的HTTP请求/响应周期。HTTP中没有变量。只需查询字符串和消息体。可能与您拥有的内容重复的是“原始”ajax。完美的功能代码,但让您来处理所有浏览器差异、向后兼容性等。大多数人只使用jquery库,它将所有内容封装到一个
$中。get(…)
call。在后台,一切都是一样的——一个普通的HTTP请求/响应周期。HTTP中没有变量。只需查询字符串和消息体。OK可能重复,但在php代码中如何检索该数据?我会使用$\u GET['you\u user']?是的!为了确保并检查请求,请在您的logtime.php中添加:var_dump($_request);很好,这回答了我的问题。谢谢。不客气!请选择已接受的答案;)对不起,什么是logtime.php文件?好的,但是在php代码中如何检索该数据?我会使用$_GET['you_user']?是的!为了确保并检查请求,请在您的logtime.php中添加:var_dump($_request);很好,这回答了我的问题。谢谢。不客气!请选择已接受的答案;)对不起,什么是logtime.php文件?