ajax数据传递给php无法正常工作

时间:2016-04-16 22:56:31

标签: php jquery ajax post

好的,我已经为了这个答案搜索了stackoverflow,并且遇到了几个讨论如何做到这一点的线程,好吧,他们还没有帮助过我。

这一切都在一页上,所以这可能是个大问题。我真的不想将帖子数据发送到其他页面,然后重定向回到那个页面以使其工作,但是如果你们不能帮助我做这项工作,我会的。

无论如何,我有这个页面并且我试图通过ajax将数据传递给php,我知道php是一种服务器端语言,所以一旦数据传递就必须重新加载页面。

PHP:

if (isset($_POST['location'])) {
        echo $_POST['location'];
        echo "hey";
}

jquery的:

var whateva = "hello";
$.post('index.php', {'location': whateva}, function(){
    //alert(data);
    //window.location.reload(true);

});

警报(数据);确实让它工作并在给出isset时回显(并且还打印出所有其他的html),但这是一个不实用的警报,特别是从用户的角度来看。但这意味着这个ajax功能正在运行。这里的问题是我想要加载相同的页面,只需要使用$ _POST [' location']变量集,所以我有一个明智的想法就是在这种情况下重新加载页面作为函数,不起作用。 isset永远不会成功

任何帮助将不胜感激,除了告诉我结合PHP和JavaScript是一个可怕的想法,因为我已经知道

编辑:

我被告知要尝试制作另一个页面来发回仍然无法正常工作的数据,这里是代码(主页ajax调整为直接指向那里):

window.onload = function(){
var inter = <?php echo json_encode($_POST['location']); ?>;
$.post('index.php', {location: inter});
}

我在.post中的位置周围和没有引号的情况下尝试过它。此外,我试图在那里只有普通的javascript,没有onload,仍然没有。更改为此页面时主页面上的响应

$.post('intermediary.php', {location: whateva}, function(response) {
    // Log the response to the console
    console.log("Response: "+response);
});

它打印出隐藏页面的html,变量填入(var inter =&#34; hello&#34;而不是像那里那样拥有php),所以传递给那个页面工作< / p>

2 个答案:

答案 0 :(得分:1)

好的,这是故障。

文件一: index.html 此文件仅为HTML和Javascript,是用户看到的页面。这可能是一个php页面,但它不需要。请注意字符串'whateva'周围的引号。

<html><head></head><body>

<script>
  $.post('intermediary.php', {location: 'whateva'}, function(response) {
      // Log the response to the console
      console.log("Response: "+response);
  });
</script>

</body></html>

文件二: intermediary.php 这个文件只是PHP。它通过POST静默接收数据,并通过回显数据返回数据。

<?php
if (isset($_POST['location'])) {
    echo $_POST['location'];
    echo "hey";
} else {
    echo 'No data received!';
}
?>

答案 1 :(得分:0)

哦......这是一个简单的错误。您的ajax语法错误...删除大括号内的ajax参数的引号。就像

var whateva = "hello";
 $.post('index.php', {location: whateva}, function(){
 //alert(data);
 //window.location.reload(true);

 });

它可以正常工作....但是你可以使用变量到ajax参数,你应该使用变量名来获取ajax 位置参数值。但是您可以将字符串用于位置参数值,然后您应该在引号中使用值,例如$.post('yourfile.php',{location:'your_name'},function(){});。但您可以使用位置参数的某些值来输入此代码。$.post('yourfile.php',{location:30},function(){});