POST工作,但PHP无法识别它

时间:2014-01-21 23:47:19

标签: php ajax post isset

我见过很多相同的例子,但它对我不起作用!我真的不知道我的代码有什么问题。当我通过

发表帖子时
window.location.href = "teste.php?name=" + javascriptVariable; 

它工作得很好,但遗憾的是,重新加载页面,我真的不想要它。 所以我见过的唯一解决方案就是通过jQuery来实现。所以这就是我正在做的事情。

<script>
function opa() { 
  //var javascriptVariable = "John";
  //window.location.href = "teste.php?name=" + javascriptVariable; 
  //alert (dataString);return false;  
  var dataString = "axius";
$.ajax({  
 type: "POST",  
  url: "http://localhost/teste.php",  
  data: {
                name : dataString
            },  
  success: function() {  
    alert("postado!");
  }  
});  
return false;  
}

function opa2() { 
  alert("<?php
if(isset($_POST['name'])){
    $value = $_POST['name'];   
} else {
    $value = "NotWorking";
}
echo $value;
?>");
}

</script>

<button onclick="opa();"> AperteOpa1 </button> 

<button onclick="opa2();"> AprteOpa2 </button> 

POST完美运行,当我在Firefox的Web控制台上看到它时,它发生得非常好,我可以看到参数的值。我认为问题在于PHP无法识别数据。我试图执行POST请求槽     xmlhttp.open(); 但它没有工作,同样的问题,发生的事情,但PHP不承认... 代码有什么问题?

3 个答案:

答案 0 :(得分:0)

问题是页面是由PHP首先生成的,而未设置POST变量。 ajax请求不会导致页面重新加载,因此不会重新生成,因此此代码永远不会看到提交的数据。

我不确定你真正要完成什么,所以我无法建议正确的解决方法,但似乎你对服务器端和客户端处理的发生方式和时间有不完全的理解。

答案 1 :(得分:0)

您的代码确实有效,但它永远不会被调用。

ajax调用没有重新加载页面,所以当处理页面时,那里没有$ _POST ['name']。

页面的ajax版本将设置该变量,但当前运行的变量不会。

您的流程

GET PAGE =>                         => show post name
            AJAX Request => Post => 

应该是

GET PAGE =>
            AJAX Request => post => show post name

如您所见,Ajax请求不会触及您的版本中的帖子名称。您需要从ajax请求中获取数据,然后对其执行某些操作。不是原始页面版本

你的帖子应该返回javascript可以解析的东西,无论是纯文本还是JSON

答案 2 :(得分:0)

问题是您要发布到其他脚本(teste.php),而不是尝试运行javascript的脚本。

虽然有人说你不能混用PHP和Javascript,但我不同意。 PHP发生在(在服务器端)之前,所以你的直觉是好的。唯一的问题是$ _POST不包含任何值(除非你从teste.php访问它)。

您需要将数据从php文件发送回成功函数:

success: function(response) {
   alert(response);
}

另外,仅为了一般信息,我宁愿替换

if(isset($_POST['name'])){
    $value = $_POST['name'];   
} else {
    $value = "NotWorking";

$value = isset($_POST['name']) ? $_POST['name'] : 'NotWorking';

它更干净!

希望这有帮助!