2012-10-11 38 views
2

我遇到了JQuery Mobile(對我而言)和AJAX調用的問題。我使用下面的代碼:

$.ajax({ 
      type: "POST", 
      url: "http://**correct url**/post/todoitem", 
      beforeSend: addHeaders, 
      dataType: "json", 
      contentType: "application/json", 
      data: { "todoitem":"test" }, // this is just as a test 
      success: function(result) { 
       alert("Success: " + JSON.stringify(result)); 
      }, 
      error: function() { 
       alert("Error: " + JSON.stringify(arguments)); 
      } 
     }); 

在執行此操作,它調用一個PHP腳本,我從的TodoItem需要的數據,所以在這種情況下,字符串「文本」(到底,多變量發送,但現在我只是簡單地使用一個參數)。

我的PHP代碼如下所示(也只是爲了測試目的):

echo json_encode($_POST)); 

結果是:什麼都沒有,空。 $ _POST似乎是空的。我搜索並嘗試了很多東西,但大多數答案(即使是在這裏的stackoverflow)都是關於表單的,而且人們說我需要序列化表單的內容。但是,我根本沒有使用表格。

我也試過

data: JSON.stringify({ "todoitem" : "test" }) 

一些建議,但這個也不能工作。 我知道數據被轉移,因爲這個小PHP黑客我試過的:

echo file_get_contents('php://input'); 

,明確列出了數據:=的TodoItem測試。那麼這一切都出錯了?我正在爲此工作數日!日Thnx提前

+0

你正在測試什麼設備?以及jQuery和jQuery Mobile版本是什麼? –

+0

爲什麼在執行它之前不使用$ .post並調用addHeaders? 我想也許它是在做一個獲取,而不是 – pythonian29033

+0

這不是一個GET,PHP只是不解碼應用程序/ JSON :) –

回答

3

問題是與你的這部分代碼:

contentType: "application/json",` 

刪除該行應使發送Content-Type頭默認爲application/x-www-form-urlencoded和PHP將請求解碼爲$_POST

+0

這似乎工作。非常奇怪,因爲我實際上添加了該行,因爲我在搜索期間在另一個網站上看到了該行。所以起初,我甚至沒有在那裏(我曾經在那裏有過'application/x-www-form-urlencoded')。可能做了比我想的更多的錯誤。任何人感謝您的幫助! – Niles11