2012-02-05 48 views
1

在今天早些時候的帖子中,答案讓我想不起使用JSON提要填充頁面元素的路線。瞭解jquery getjson方法

學習新東西!

JSON數據是從PHP腳本創建的,該腳本從Mysql數據庫中檢索數據。 php腳本檢索我需要通過getJson調用傳遞給php腳本的特定記錄。

我已經成功地創建了作爲GET方法添加參數的url,但我找不到POST方法的示例 - 參數應作爲可選參數。這裏是我迄今爲止...

function loadData(index) { 
     alert(index);//debug 
      $.getJSON('loadJSONholeData.php' , 
       {hole: index} , 
       function(data) { 

我發現了Twitter的飼料,顯示像選項參數的例子:「貓」,卻找不到一個選項,其中的值是一個變量。

我不明白如何使用參數 - 我在哪裏出錯。欣賞這可能是一個基本問題,但我正在學習。

感謝

更新: 我每次修訂下面的響應代碼,並且使用了建議通過之後的參數,但是接收PHP代碼是不讀書的POST參數,只是返回默認值查詢。

我甚至使用靜態值1作爲一個值和一個字符串,但沒有喜悅。

這是我接受的PHP代碼訪問POST值:

$hole = 3; 
if (isset($_POST['hole'])) { 
$hole = $_POST['hole']; 
} 

我缺少的東西在這裏的基本。 'index'中的值肯定存在,因爲它顯示在調試中並且正在返回JSON數據)(但是是默認值)。我可以回到我的GET方法,但想看看這個工作!

謝謝

更新:成功!

我用修改後的代碼進一步玩了一下。我從代碼中刪除了內容類型參數,它現在都可以工作,PHP返回正確的查詢。

我假設通過指定contentType中的JSON類型,它以不同的方式將PHP參數以一種不同的方式傳遞給PHP,並且以其他方式期待它?

勇往直前和向上 - 感謝

回答

4

的$ .getJSON()方法的HTTP GET和POST沒有。試試這樣 -

$.ajax({ 
      url: 'loadJSONholeData.php', 
      data: JSON.stringify({hole: index }),   
      type: 'POST', 
      contentType: 'application/json;', 
      dataType: 'json', 
      success: function (result) { 
      //(result.d) has your data. 
      } 
     }); 
+0

我添加了一個更新,嘗試了這種方法,但POST參數似乎不被傳遞 – Ray 2012-02-05 18:07:22

+0

我不熟悉PHP代碼(我進入C#),但它看起來像你試圖訪問表單的帖子值。這些值不在那裏。你的服務器端方法應該有一個名爲'hole'的參數,然後訪問參數中的值。說得通? C#中的等價代碼是public static void loadJSONholeData(string hole){// hole具有index的值。 }' – tempid 2012-02-05 18:20:03

+0

排序 - 我雖然只是設法讓它工作 - 我已經更新了我的職位 - 謝謝你的幫助 – Ray 2012-02-05 18:22:24

1

參數對象中的每個鍵/值對都將表示HTTP POST中的參數。你可以使用變量作爲值,但我相信它們會被轉換爲字符串,所以最好自己做一下轉換(這樣你就可以確保它們具有正確的格式)。一個簡單的例子:

var dynamicValue = foo(); 
$.post('my/url', { var1:"static value", var2:dynamicValue }, function(data) { 
    // Your callback; the format of "data" will depend on the 4th parameter to post... 
}, "json"); // ...in this case, json 

現在,如果你的服務器要求一個JSON編碼的對象/列表中,您可以通過使用JSON.stringify傳遞:

function foo() { 
    return JSON.stringify({ my:"object" }); 
} 

JSON應該在最現代的瀏覽器可用,如果不是,你可以得到它here(json2.js,在「JavaScript」下)。