无法检索POST数据

时间:2014-10-17 08:02:08

标签: javascript php jquery ajax

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

以下是函数的链接:

<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;
 ?>

我没有在firebug中返回错误,我得到的是我放在ajax和外部的日志语句,只是没有在PHP页面上获得空数组。 真诚的感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您正在使用锚标记将用户发送到页面。如果这样做,所有帖子数据都将丢失。您需要使用#替换锚标记中的网址,以确保用户留在页面上:

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

答案 1 :(得分:1)

首先,您应该在js函数中放置return false;,这样做不会有任何重定向,

在开发者网络中检查您的请求,如果网址是否正确以及您是否在ajax帖子中检索任何错误。

答案 2 :(得分:0)

点击该链接时,系统会调用postData(),但浏览器正在加载<a href>中指定的网址。您可以执行以下三种操作之一:

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

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

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

  4. 另一个有用的调试技巧:您可以输出data变量(PHP脚本中返回的值),如下所示:console.log(data);

    既然您似乎正在构建一个最终将值从服务器传递回前端的表单,我建议您查看这篇文章:Pass a PHP Array to Javascript as JSON using AJAX and json_encode()