2014-10-17 180 views
0

我無法使基本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

回答

2

您正在使用錨標記將用戶發送到頁面。如果你這樣做,所有的發佈數據都會丟失。您需要#更換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

1

首先,你應該把一個return false;在js函數,這樣做不會有任何重定向,

在開發者網絡中檢查你的請求,如果URL是正確的,並且你在ajax post期間檢索到任何錯誤。

+0

非常感謝。我沒有看過這麼多。帖子請求被取消。 – ambe5950 2014-10-17 08:19:08

0

點擊鏈接時,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()