将数据从javascript传递到PHP而不点击任何内容

时间:2014-04-15 02:13:03

标签: javascript php ajax

我需要将数据从javascript传递到PHP,而无需加载页面或不点击任何内容。当我打开该页面时,它会自动将ab附加到网址。提前致谢

这是我的javascript代码:

<script>
    var a = "bully";
    var b = "burger";
    window.location.href = "somepage.php?a=" + hello + "&b=" + world;
</script>

这是PHP:

<?php
    if(isset($_GET['a']) && isset($_GET['b'])){
         echo $_GET['a'] . $_GET['b'];
    }
?>

3 个答案:

答案 0 :(得分:0)

在页面被发送到客户端之前处理PHP,因此在不重新加载的情况下将信息从Javascript传递到PHP的唯一方法是通过AJAX调用。

答案 1 :(得分:0)

您可以拨打AJAX电话。为了实现这一目标的快捷方式,我建议您使用jQuery来完成这项工作。 Get it here。然后你只需要做这样的事情:

var a = "bully";
var b = "burger";
$.get("somepage.php?a=" + a + "&b=" + b);

看看这&#34;得到&#34;功能有效,点击此处查看API documentation reference

答案 2 :(得分:0)

我在Google Chrome浏览器上对此进行了测试。

<强>的script.js

AJAX请求使用XMLHttpRequest对象。很好地解释了here

var a = "bully";
var b = "burger";

var url = 'process.php?a=' +a+ '&b=' +b;

console.log('sending request ...');
var xhr = new XMLHttpRequest();    // create the object

// ajax on load
xhr.addEventListener('load', function(e) {
    console.log('Response loaded: ' +this.responseText);
    document.body.innerHTML = this.responseText;


    // change the url on the address bar
    // pushState(object or string, title, newUrl)
    window.history.pushState({a: a, b: b}, 'Title: ' +a+ ' ' +b, '?a=' +a+ '&b=' +b);
}, false);

// ajax on error
xhr.addEventListener('error', function(e) {
    console.log('Failed to load the response.');
    document.body.innerHTML = 'Failed to load the response.';
}, false);

// open(method, url, isAsynchronous). Should be called after we set all events.
xhr.open('GET', url, true);    // open the connection.
xhr.send();    // send the request.

<强>的index.html

只需包含javascript文件即可执行AJAX请求。

<!DOCTYPE html>
<html>
    <head>
        <title>Demo</title>
        <script src="script.js"></script>
    </head>
    <body>

    </body>
</html>

<强> process.php

此脚本获取javascript发送的参数。

<?php

$a = $_GET['a'];
$b = $_GET['b'];
echo $a. ' ' .$b;

<强> P.S。编辑的

在“load”事件中添加window.history.pushState()以更新/更改地址栏上的当前URL。请参阅herehere