2017-09-04 44 views
0

我在Django中創建了一個API,在URL中輸入一個變量並使JSON響應成爲可能。如何在JavaScript中通過POST API返回JSON響應

例如,我們有這個網址:

http://127.0.0.1:8000/api/string/IAMNEWTOJAVASCRIPT

而且JSON的反應是:

{"id": 1, "string": "iamnewtojavascript"} 

如何在JavaScript中返回該JSON。我搜查了網頁,但沒有結果給我一個滿意的答案。

在Python代碼是這樣的簡單:

import requests 
import json 

url = "http://127.0.0.1:8000/api/string/IAMNEWTOJAVASCRIPT" 

req = requests.post(url) 
p = req.json() 
data = json.dumps(p) 
print(data) 
+0

你是什麼意思沒有結果給你一個滿意的答案?你已經嘗試過任何東西,例如對該端點的簡單Ajax調用? – adeneo

+0

我是非常新的JS和大多數的結果是使用JSON.stringify,從我的理解是讓你張貼數據手動JSON。我的API使用URL中的變量,並且要做的是檢索。該框架正在完成其餘的代碼。 – ottomd

+1

您的API需要返回JSON。據我瞭解你當前的代碼,你只是將JSON打印到服務器控制檯,但如果有人向您的API發送POST請求,則不會返回任何內容。 [首先,如果有人發送POST請求,你必須閱讀如何返回內容。](http://docs.python-requests.org/en/latest/user/quickstart/) 在你理解了您可以使用[XMLHttpRequest API發送POST請求](https://developer.mozilla.org/de/docs/Web/API/XMLHttpRequest)。響應對象將包含API中的JSON。 – Patte

回答

0

在JavaScript中使用 '的XMLHttpRequest' 會。看看here

例子:

var objectToSend = { 
    id: "1", 
    string: "iamnewtojavascript" 
}; 

var request = new XMLHttpRequest(); 

// callback function for readyState 
request.onreadystatechange = function(){ 
    if(this.readyState == 4 && this.status == 200) // check if request has completed, and check if server response is valid 
     alert(this.responseText) // alert received anwser from server 
} 

// open connection to server 
request.open("POST", /* URL GOES HERE */, true); 
// send "objectToSend" 
request.send(JSON.stringify(objectToSend)); 

這就是如何做一個POST請求到服務器。 HTTP-Post-Request用於在服務器上創建數據。

但我認爲你想使用的是一個HTTP-Get-Request。爲了做到這一點,只需將request.open("POST", ...)更改爲request.open("GET", 'url', true);並且不需要參數即可撥打request.send()

有關HTTP-Post-Request和HTTP-Get-Request之間差異的說明,請參閱this

+0

我試過了,它返回「ReferenceError:XMLHttpRequest未定義」。我試圖安裝,但無濟於事。我試圖用npm來安裝它。但它說它沒有定義。 – ottomd

+0

Mhn,你想建立一個網站嗎?瀏覽器應該有內置的XMLHttpRequest。如果您構建節點應用程序,只需從這裏獲取:https://www.npmjs.com/package/xmlhttprequest – kangaro0

+0

使用JavaScript,我只是試圖以相同的方式提取JSON我用python做了。我在AngularJS中使用這個API,這隻需$ http.post就很容易使用。 – ottomd