无法检索POST数据

问题描述:

我无法使基本ajax POST正常工作。在我无法使用jquery .click等问题之后,我切换到了onclick。只是想知道我是在做一些明显的错误还是什么。如果没有明显的错误,那可能是apache的东西?这里没有太多的经验,所以任何帮助,将不胜感激。无法检索POST数据

这里是一个功能的链接:

<a href="markerpages.php" onclick="postData()">click this for php page</a> 

下面是函数:

function postData() { 
      console.log("outside ajax is working"); 

      $.ajax({ 
       type: "POST", 
       url: "/markerpages.php", 
       data: { 
        source1: "some text", 
        source2: "some text 2"}, 
       success: function (data) { 
        console.log("inside ajax is working"); 
       }, 
       error: function() { 
        console.log("ajax post failed") 
       } 
      }); 

这里是我有我的PHP网页:

<?php 
if (isset($_POST['source1'])) 
     $src1 = $_POST['source1']; 
    else $src1 = "post data not obtained"; 

    echo $src1; 

      echo "<pre>" . print_r($_REQUEST, 1) . "</pre>"; 

    print_r($_POST); 
    var_dump($_POST); 
    var_dump($_POST);die; 
?> 

我不会返回萤火虫中的错误,并且我得到我放在ajax和外部的日志语句,只是没有获得空数组PHP页面。 真诚感谢您的任何帮助。

+0

你确定你有正确的PHP的网址是什么? 'url:“/markerpages.php”,' – Ghost 2014-10-17 08:03:51

+0

最后一个脚本的输出是什么?它打印什么? – Jerodev 2014-10-17 08:04:00

+0

在postData函数中,url变量是否被定义? – 2014-10-17 08:04:31

您正在使用锚标记将用户发送到页面。如果你这样做,所有的发布数据都会丢失。您需要#更换URL的锚标记,以确保用户停留在页面上:

<a href="#" onclick="postData()">click this for php page</a> 
+0

这可能是我一直在寻找的答案!我将它们发送到动态生成的页面,但我想我不应该在POST数据的同时尝试实现这一目标。 – ambe5950 2014-10-17 08:09:13

+0

因此,如果我想将它们发送到动态生成的PHP页面,但我也想将数据发送到同一页面(我知道我的简化示例不这样做,但实际上是我在做什么)? – ambe5950 2014-10-17 08:12:04

+0

您可以将它们全部封装在html表单中,将发布数据放在隐藏字段中,并将锚标签用作提交按钮。这完全取决于你想要做什么。 – Jerodev 2014-10-17 08:14:53

首先,你应该把一个return false;在js函数,这样做不会有任何重定向,

在开发者网络中检查你的请求,如果URL是正确的,并且你在ajax post期间检索到任何错误。

+0

非常感谢。我没有看过这么多。帖子请求被取消。 – ambe5950 2014-10-17 08:19:08

点击链接时,postData()正在被调用,但浏览器正在载入您的<a href>中指定的URL。你可以做的三种可能的事情之一:event.preventDefault()

  1. 你POSTDATA()函数的顶部添加以下行。这将停止原始事件点击操作,并且是首选方法。

  2. 更改您的onclick属性并添加return false以防止URL单击行为。例如:onclick="postData(); return false;

  3. <a href="/markerpages.php">更改为<a href="#">。但这不是一个好方法,因为该页面的URL将更改为mypage.htm#

另一个有用的调试提示:您可以输出data变量(从你的PHP脚本返回的值),就像这样:console.log(data);

而且因为你似乎是手建立一个形式,最终会从服务器返回到前端传递值,我建议在看这篇文章:Pass a PHP Array to Javascript as JSON using AJAX and json_encode()