使用ajax将javascript变量传递给php,没有结果?

时间:2018-01-02 11:39:03

标签: javascript php ajax

MY 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));

php页面:

$var = $_POST['m'];    
echo $var;

当我调用php页面时没有任何反应!你能救我吗?

2 个答案:

答案 0 :(得分:2)

您需要更改变量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));

答案 1 :(得分:0)

你有两个问题。

变量名称

在代码的顶部,您可以创建一个名为$m的变量,但稍后您会尝试阅读m

如果您在浏览器的开发者工具中查看了控制台

,这将抛出一个您会发现的ReferenceError

你永远不会看到回复

一旦您修复了该错误,您的代码就会发出请求......但您不会对响应做任何事情。

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

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

xhr.addEventListener("load", alert_response);

旁白

  • escape 已弃用,因为它无法正常运行。请改用encodeURIComponent
  • 默认情况下,PHP会在响应中粘贴text/html内容类型,通过回显用户输入而不进行修改或过滤,您很容易受到XSS攻击。采取措施为自己辩护。