2012-07-12 201 views
12

我正在嘗試使用JSON來啓動對API的POST請求。使用JSON POST請求

我發現一些示例代碼,之前,我太遠,我想拿到工作,但我堅持......

<html> 
<head> 
<script type="text/javascript"> 
function JSONTest() 
{ 
requestNumber = JSONRequest.post(
    "https://example.com/api/", 
    { 
     apikey: "23462", 
     method: "example", 
     ip: "208.74.35.5" 
    }, 
    function (requestNumber, value, exception) { 
     if (value) { 
      processResponse(value); 
     } else { 
      processError(exception); 
     } 
    } 
); 
} 
</script> 
</head> 
<body> 

<h1>My JSON Web Page</h1> 


<button type="button" onclick="JSONTest()">JSON</button> 

</body> 
</html> 

這是一個.html文件,對此我在鉻中運行。沒有任何反應,當我點擊按鈕...

我想我錯過了一段JavaScript解釋JSON響應,可以顯示?否則有其他建議?

+0

我的印象是JSON是JavaScript的一個子集,......下?所以Javascript可以運行它沒有問題? – GK1667 2012-07-12 16:58:24

+0

JSON是一種數據交換格式。現代瀏覽器可以理解這一點,但舊版瀏覽器需要一個庫來將JSON字符串轉換爲JavaScript對象。我建議使用像jQuery這樣的庫來幫助你解決這個問題,因爲這也解決了老客戶端的一些瀏覽器兼容性問題。 – Phil 2012-07-12 17:02:07

+0

大多數現代瀏覽器都有可用的JSON對象,但JSONRequest不是窗口或文檔對象上本機可用的對象或函數。 – kinakuta 2012-07-12 17:04:38

回答

27

下面是一個使用jQuery的例子。希望這有助於

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<title>My jQuery JSON Web Page</title> 
<head> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script type="text/javascript"> 

JSONTest = function() { 

    var resultDiv = $("#resultDivContainer"); 

    $.ajax({ 
     url: "https://example.com/api/", 
     type: "POST", 
     data: { apiKey: "23462", method: "example", ip: "208.74.35.5" }, 
     dataType: "json", 
     success: function (result) { 
      switch (result) { 
       case true: 
        processResponse(result); 
        break; 
       default: 
        resultDiv.html(result); 
      } 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
     alert(xhr.status); 
     alert(thrownError); 
     } 
    }); 
}; 

</script> 
</head> 
<body> 

<h1>My jQuery JSON Web Page</h1> 

<div id="resultDivContainer"></div> 

<button type="button" onclick="JSONTest()">JSON</button> 

</body> 
</html> 

Firebug的調試過程

Firebug XHR debug process

+1

這是一個很好的例子!我的問題是,它發送到「請求錯誤」部分。我用nonexample數據替換了所有的東西,但它仍然不起作用。我已成功地聯繫了此API,並通過使用PHP curl函數並讓用戶在發佈到php的html頁面上輸入apikey,method和ip來獲得respnose。任何其他的想法如何我可以做到這一點,並獲得使用JavaScript的迴應? – GK1667 2012-07-12 18:06:59

+0

嗨。我已經更新了上面的回覆,只是更改了錯誤處理程序,它應該會提供有關錯誤的更多信息。正如賈森提到的那樣,通常如果錯誤處理程序被調用,通常會出現某種傳輸/錯誤。嘗試更新代碼並查看新錯誤是什麼。我強烈建議安裝Fiddler,或者使用谷歌瀏覽器F12調試,這樣你就可以'確切地'看到'發動機蓋下'發生了什麼。隨時回到我:) – Phil 2012-07-12 19:21:16

+0

非常感謝。我非常感謝你在這方面堅持我。我一直在努力將這些連在一起幾天,甚至無法連接!無論如何,我嘗試添加代碼。它只返回「0」。我有螢火蟲在跑,我是新使用它,所以如果你有什麼要求,你想讓我檢查什麼,我會很樂意這樣做! – GK1667 2012-07-12 19:26:42

0

現在的瀏覽器目前不實現JSONRequest(據我所知),因爲它現在只是一個草稿。我找到了一個將它實現爲圖書館的人,您可以將其包含在您的頁面中:http://devpro.it/JSON/files/JSONRequest-js.html(請注意,它有一些依賴關係)。

否則,您可能想要使用另一個JS庫,如jQuery或Mootools。