-3
我不能解碼JSON我從我的JavaScript文件中獲得(服務器處理請求是寫在GO)解碼JSON從Javascript發送到golang服務器
我必須繼續下面的JavaScript代碼,以便發送一個要求。
function Connect() {
var data = JSON.stringify({
Version: "0.1",
Action: "test",
Data: {}
});
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
if(xhr.status >= 200 && xhr.status < 300) {
console.log(xhr.responseText);
} else {
console.warn(xhr);
}
}
};
xhr.open("Post", "http://localhost:5252", true);
xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
xhr.send(data);
}
據我所知,這應該工作,以便發送JSON到服務器。 我的服務器接收到這些請求,但我無法對其進行解碼。
func newRequestFromJSON(jsonData io.Reader) (*Request, error) {
// Decode the JSON to the request value.
decoder := json.NewDecoder(jsonData)
var r Request
err := decoder.Decode(&r)
if err != nil {
return nil, e.New(err.Error() + " at " + u.GetFile_line())
}
return &r, nil
}
Request結構看起來如下。
type Request struct {
Version string
Action string
Data interface{}
}
而io.reader獲取request.body作爲參數。該代碼適用於如果例如我用firefox的HttpRequester插件發送同樣的東西。
我得到一個EOF錯誤,它表示請求是零。我認爲請求的主體是空的,但我不確定這一點。
我在這裏錯過了什麼?
如果你的代碼在一種情況下工作,這意味着'newRequestFromJSON'工作。請在出現故障的情況下說明如何使用該功能。 – JimB
檢查瀏覽器中的網絡選項卡以查看請求。您應該能夠查看請求部分,其中將包含有效負載。 – Mobius
在這兩種情況下,該方法被調用相同的方式(通過處理傳入請求的handlefunc) 我檢查了網絡選項卡,看到有一個「跨源請求被阻止」的錯誤 - 是這個原因嗎? 但是,爲什麼會有這樣的錯誤,因爲一切都運行在同一臺機器上... – Lotoras