将JavaScript的变量传递给当前页面的PHP。

24 浏览
0 Comments

将JavaScript的变量传递给当前页面的PHP。

如何使用JavaScript进行AJAX调用,而不使用jQuery?

0
0 Comments

问题的出现原因:在现代浏览器中,可以使用Fetch API来发送web请求。但是,在某些情况下,我们可能需要将JavaScript中的变量传递给PHP,并且希望PHP将变量传递回当前页面。

解决方法:可以使用以下步骤来解决这个问题:

1. 在JavaScript中,使用Fetch API发送请求并将变量作为参数传递给PHP。例如,我们可以使用以下代码发送GET请求并传递一个变量:

let variable = "Hello";
fetch('/path-to-php-file.php?variable=' + variable)
  .then(response => response.text())
  .then(data => {
    // 处理从PHP返回的数据
    console.log(data);
  });

2. 在PHP文件中,通过使用`$_GET`或`$_POST`来获取传递的变量。例如,我们可以使用以下代码在PHP中获取传递的变量并将其返回给JavaScript:

$variable = $_GET['variable'];
echo $variable;

3. 在JavaScript中,通过`fetch()`的回调函数处理从PHP返回的数据。

可以通过使用Fetch API将JavaScript变量传递给PHP,并从PHP返回数据到当前页面。以下是完整的示例代码:

// JavaScript
let variable = "Hello";
fetch('/path-to-php-file.php?variable=' + variable)
  .then(response => response.text())
  .then(data => {
    // 处理从PHP返回的数据
    console.log(data);
  });

// PHP
$variable = $_GET['variable'];
echo $variable;

通过执行上述步骤,我们可以成功将JavaScript变量传递给PHP,并从PHP将数据返回到当前页面。

0
0 Comments

在这段代码中,通过使用ajax对象的get和post方法,可以将JavaScript中的变量传递到PHP,并将服务器响应返回到当前页面。然而,这段代码存在一些问题。

首先,代码中的ajax.send方法中的async参数默认为true,即异步请求。这意味着在发送请求后,代码会继续执行而不会等待服务器响应。因此,无法使用return语句将响应数据返回到调用方法的地方。

其次,代码中使用的XMLHttpRequest对象的open方法中的第三个参数应为async,而不是sync。这是因为open方法的签名中使用的参数名是async。

此外,代码中的ajax.send方法中设置了请求头的Content-type为'application/x-www-form-urlencoded',这是为了指定请求数据的编码格式。

最后,如果想要在Chrome浏览器中避免出现"Synchronous XMLHttpRequest on the main thread is deprecated"的错误信息,可以将代码中的async参数设置为true。

解决以上问题的方法如下:

1. 将ajax.send方法中的async参数设置为true,以确保异步请求。

2. 将ajax.send方法中的open方法的第三个参数改为async,以匹配open方法的签名。

3. 可选地,在ajax.send方法中添加xhr.withCredentials = true;以支持CORS请求。

下面是修正后的代码:

var ajax = {};
ajax.x = function () {
    if (typeof XMLHttpRequest !== 'undefined') {
        return new XMLHttpRequest();
    }
    var versions = [
        "MSXML2.XmlHttp.6.0",
        "MSXML2.XmlHttp.5.0",
        "MSXML2.XmlHttp.4.0",
        "MSXML2.XmlHttp.3.0",
        "MSXML2.XmlHttp.2.0",
        "Microsoft.XmlHttp"
    ];
    var xhr;
    for (var i = 0; i < versions.length; i++) {
        try {
            xhr = new ActiveXObject(versions[i]);
            break;
        } catch (e) {}
    }
    return xhr;
};
ajax.send = function (url, callback, method, data, async) {
    if (async === undefined) {
        async = true;
    }
    var x = ajax.x();
    x.open(method, url, async);
    x.onreadystatechange = function () {
        if (x.readyState == 4) {
            callback(x.responseText)
        }
    };
    if (method == 'POST') {
        x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    }
    x.send(data);
    if (!async) {
        return x.responseText;
    }
};
ajax.get = function (url, data, callback, async) {
    var query = [];
    for (var key in data) {
        query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
    }
    ajax.send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null, async);
};
ajax.post = function (url, data, callback, async) {
    var query = [];
    for (var key in data) {
        query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
    }
    ajax.send(url, callback, 'POST', query.join('&'), async);
};

现在,可以使用修正后的代码将JavaScript变量传递给PHP,并将服务器响应返回到当前页面。例如:

ajax.get('/test.php', {foo: 'bar'}, function(responseText) {
    alert(responseText);
});

通过以上修正,我们解决了将JavaScript变量传递给PHP并返回服务器响应的问题。

0
0 Comments

问题的原因是需要将JavaScript中的变量传递给当前页面的PHP代码执行。解决方法是在JavaScript中使用XMLHttpRequest或jQuery的ajax方法来发送HTTP请求,并在返回的数据中包含JavaScript变量的值。然后,可以通过PHP脚本来处理传递的变量并将结果返回给当前页面。

以下是解决方法的详细步骤:

1. 使用原生JavaScript的XMLHttpRequest对象发送HTTP请求。在loadXMLDoc函数中,创建一个XMLHttpRequest对象并设置其onreadystatechange事件处理程序。当readyState等于XMLHttpRequest.DONE(值为4)时,表示请求已完成。在这个if条件中,检查status的值,如果为200,则表示请求成功。可以通过xmlhttp.responseText获取返回的数据。将返回的数据赋值给页面上的某个元素的innerHTML属性,以显示结果。

2. 使用jQuery的ajax方法发送HTTP请求。在代码中,使用$.ajax函数,并传递一个对象作为参数。该对象包含url属性,指定要请求的URL,success属性,指定请求成功后的回调函数。在回调函数中,可以使用jQuery选择器和addClass方法来操作页面元素。

使用这些方法,可以将JavaScript变量的值传递给PHP代码并执行相应的操作。

0