使用ajax将javascript变量传递给php,结果如何?

使用ajax将javascript变量传递给php,结果如何?,javascript,php,ajax,Javascript,Php,Ajax,我的js页面: $m = 77; var xhr = new XMLHttpRequest(); xhr.open("POST", "try.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send("m=" + escape(m)); $var = $_POST['m']; echo $var; php页面: $m

我的js页面:

$m = 77;    
var xhr = new XMLHttpRequest();    
xhr.open("POST", "try.php", true);    
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    
xhr.send("m=" + escape(m));
$var = $_POST['m'];    
echo $var;
php页面:

$m = 77;    
var xhr = new XMLHttpRequest();    
xhr.open("POST", "try.php", true);    
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    
xhr.send("m=" + escape(m));
$var = $_POST['m'];    
echo $var;

当我调用php页面时,什么都没有发生!您能帮助我吗?

只需更改变量m即可获得预期的输出

    m = 77; // here what i have changed from $m to m

    var xhr = new XMLHttpRequest();

    xhr.open("POST", "try.php", true);

    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    xhr.send("m=" + escape(m));
你有两个问题

变量名 在代码顶部创建一个名为
$m
的变量,但稍后尝试读取
m

这将抛出一个ReferenceError,如果您在浏览器的开发人员工具中查看控制台,就会发现这个错误

你从来不看回答 一旦你修复了这个错误,你的代码就会发出请求……但是你不会对响应做任何事情

您应该为此添加一个加载事件侦听器

function alert_response() {
    alert(this.responseText);
}

xhr.addEventListener("load", alert_response);
旁白
  • escape
    不推荐使用,因为它不能正常工作。改用
    encodeURIComponent
  • 默认情况下,PHP会在响应上粘贴
    text/html
    内容类型,通过在不修改或过滤的情况下回显用户输入,您很容易受到XSS攻击。采取措施保护自己

更改
$m=77
m=77变为var m=77;谢谢,但它不起作用!!谢谢,但它不再起作用了!!当我加载php文件时,我什么也看不到,php变量是nullOk,所以你能给我看一下整个代码吗,让我帮你一下。事实上,我有两个文件,第一个是try.php,第二个是try.js(我发布了这两个文件)问题是php会在js文件之前解释,这就是为什么我没有结果,所以我怎么做呢,谢谢你,谢谢你,但是我如何在没有提交按钮的情况下将变量js传递给变量php呢?如果我用js制作了一个赌场游戏,并且我做了一些计算(用户输入了一个deputure数字),这个数字将会减少,直到它变为0,在这种情况下,我需要发送一个结果到一个php变量,而无需点击按钮(deputure=0时自动)来将其存储到我的msql表中,但是这个函数有问题,事实上,当我加载我的php页面时,它会生成一个警报js,并显示我的整个文本js和html!!在这里,按照您的解释顺序,我将把一个php变量存储到js变量中,但我想要相反的结果@JAVAJAVA—提供的代码演示了如何访问响应。由你决定如何处理它。如果您只是想显示一个全新的页面,那么就不要使用Ajax!只需使用常规表单提交即可。如果您不希望PHP发回一大堆HTML,那么请更改PHP,使其不会这样做(您在问题中输入的代码本身不会这样做)。@JAVAJAVA-您的代码显示了向PHP发送JS变量的尝试。答案中标题为“变量名”的部分解释了如何解决它的问题。要将数据从PHP传递到JS,您必须执行标题为“您从不查看响应”的部分所做的操作…只需使用我的
alert()
示例作为基础来更改您对数据的操作。谢谢,但是如何在没有提交按钮的情况下将变量JS传递到变量PHP?如果我用js制作了一个赌场游戏,并且我做了一些计算(用户输入了一个deputure数字),这个数字将会减少,直到它变为0,在这种情况下,我需要发送一个结果到一个php变量,而无需点击按钮(deputure=0时自动)将其存储到我的msql表中,