2011-10-31 58 views
2

我在PHP中接收POST請求時遇到問題。我正在使用JavaScript通過POST請求將數據發送到PHP頁面。 JavaScript的是OpenLayers.js,併發送請求的部分看起來像這樣:從OpenLayers接收PHP中的POST請求JavaScript

var postrequest = OpenLayers.Request.POST({ 
     url: "http://localhost/index.php", 
     data: "success", 
     headers: { 
      "Content-Type": "application/x-www-form-urlencoded" 
     } 
    }); 

在PHP中,我使用這個代碼,看看有什麼我越來越:

<?php 
    print_r($_POST); 
?> 

這是發生了什麼事情:

  1. index.php接收POST請求。
  2. FireBug還通知POST參數包含已發送的成功。
  3. print_r($ _ POST);在index.php中只是給出了這個:array(),並且在JavaScript的POST請求之後不會改變。

所以數據發送和接收,但我的PHP代碼不知道它瞭解,或者我沒有使用正確的PHP函數。

任何建議,在哪裏看,以及要嘗試什麼?

+0

PHP下載它要求在_POST/_GET的任何條目有一個有效的鍵:值建設 - 你傳遞一個簡單的「成功」字符串,這是令人困惑 - 是一個價值?那麼關鍵是什麼?這是一個關鍵嗎?沒有價值。您可以嘗試從'php:// input'讀取原始輸入。 –

+0

謝謝馬克,我完全錯過了重點/價值建設,現在我改變了它。但是print_r($ _ POST)仍然是空的。 – Geolassi

+0

你在做'data:「success = true」'?我不知道openlayers是如何工作的,但它也可以將它作爲原始字符串發送。 'data:{success:true}'會改變什麼嗎? –

回答

5

我認爲「數據」屬性需要是一個包含鍵/值對的對象。

如:

var postrequest = OpenLayers.Request.POST({ 
     url: "http://localhost/index.php", 
     data: { 
      userName: "myUsername", 
      password: "myPassword" 
     }, 
     headers: { 
      "Content-Type": "application/x-www-form-urlencoded" 
     } 
    }); 

如果在您的print_r($ _ POST),你應該看到 陣列( 「username」 的=> 「名爲myUsername」, 「密碼」=> 「MYPASSWORD」)這部作品

+0

非常感謝您的回答。我改變了代碼發佈一個鍵/值對。現在我獲得狀態作爲鍵和值「成功」,但仍然print_r($ _ POST)顯示空數組。 – Geolassi

+0

'print_r($ _ REQUEST)'? – James

+0

其實我工作。當我查看FireBug中的PHP響應時,它會告訴:'Array([status] => success)'。我猜'print_r($ _ POST)'和'print_r($ _ REQUEST)'不應該在PHP頁面中寫文本? – Geolassi