2016-11-30 41 views
0

我想發佈從本地文件到服務器的登錄信息。 這是我的代碼:以純javascript的形式從文件本地發送到服務器的數據ajax

var UrlDetails = 'http://xxx.xxx.x.xxx:xxxx'; 

function createCORSRequest(method, url, asynch) { 
// Create the XHR object. 
    var xhr = new XMLHttpRequest(); 
    if ("withCredentials" in xhr) { 
     // XHR for Chrome/Firefox/Opera/Safari. 
     xhr.open(method, url, true); 
     //if (method == 'POST') { 
      // xhr.setRequestHeader('Content-Type', 'application/json'); 
     //} 
    } else if (typeof XDomainRequest != "undefined") { 
     // XDomainRequest for IE. 
     xhr = new XDomainRequest(); 
     xhr.open(method, url, asynch); 
    } else { 
     // CORS not supported. 
     xhr = null; 
    } 
    return xhr; 
} 

function postDoLogin(e, callback) { 
    var url = UrlDetails + '/api/login?f=json'; 
    var xhr = createCORSRequest('POST', url, true); 
    if (xhr) { 
     xhr.onreadystatechange = function() { 
      try { 
       if (xhr.readyState === XMLHttpRequest.DONE) { 
        if (xhr.status === 200) { 
         callback(JSON.parse(xhr.responseText)); 
        } else { 
         xhr.status === 403 ? modalShow() : errorServer(xhr.status); 
        } 
       } 
      } 
      catch (e) { 
       alert('Caught Exception: ' + e.description); 
      } 
     }; 
     xhr.send(JSON.stringify(e)); 
    } 
} 

在我的服務器(我使用服務API),我得到的數據:

`RequestMessage = "<Binary>eyJpZCI6IjEiLCJwYXNzd29yZCI6IjEifQ==</Binary>";` 

如何解析RequestMessage到JSON閱讀?

非常感謝你

回答

0

看起來你正在使用的API是返回base64編碼的字符串。如果API不提供返回JSON而不是base64編碼字符串的功能,那麼您可以簡單地使用atob()在JavaScript中解碼它。

因此,在你的代碼,而不是

callback(JSON.parse(xhr.responseText)); 

使用

var decoded = atob(xhr.responseText); 
var json = JSON.parse(decoded); 
callback(json); 
+0

我在服務器RequestMessage。你能幫我讀嗎? –

+0

非常感謝,我不知道是base64編碼字符串的數據類型。我從另一個問題中找到了我的答案。 public static JObject BinaryToString(string encodedString) byte [] data = Convert.FromBase64String(encodedString); return JObject.Parse(Encoding.UTF8.GetString(data)); } –

+0

哦,我一定明白這個問題是錯的。我認爲來自服務器的響應是編碼的。您應該標記Java,因爲這是Java Web服務器中發生的問題 –

相關問題