3
我試圖讓NanoHTTPD(在Android設備上)以請求的JavaScript可以解釋響應的方式響應AJAX請求。如何讓NanoHTTPD響應AJAX
我已經實現了NanoHTTPD服務方法:
public NanoHTTPD.Response serve(String uri, NanoHTTPD.Method method,
Map<String, String> header,
Map<String, String> parameters,
Map<String, String> files) {
String msg = "Hello, you have connected.";
return newFixedLengthResponse(msg);
}
如果我從本地網頁瀏覽器連接「http://127.0.0.1:8080」它加載一個頁面的源代碼:
<html>
<head></head>
<body>Hello, you have connected.</body>
</html>
到目前爲止好,雖然我不確定HTML格式引入的位置。
但是,我堅持上是,如果我使用AJAX從JavaScript來嘗試傳遞數據:
$.ajax({
url: 'http://127.0.0.1:8080',
type: 'POST',
data:{ printData: dataToPrint },
success: function(d){
alert('success');
},
error: function (jqXHR, textStatus) {
alert("failed, jqXHR: " + jqXHR.responseText + " " + jQuery.parseJSON(jqXHR.responseText) + " textStatus: " + textStatus);
}
})
(這只是一個例子,我已經試過成功/失敗/完成/錯誤的方法,我試過指定數據類型,我在返回函數中嘗試了不同的參數,它們都不起作用)。當運行這個JavaScript時,NanoHTTPD服務器接收printData就好了,但是當它發送響應時,它只會觸發錯誤/失敗方法並且方法參數永遠不會包含任何內容 - 我無法設置狀態或返回消息或任何東西。
我試着從即成方法不同的回報,包括:這些工作
String mime_type = NanoHTTPD.MIME_PLAINTEXT;
String msg = "{\"status\":\"1\",\"responseText\":\"this is the response\"}";
InputStream testReply = new ByteArrayInputStream(msg.getBytes(StandardCharsets.UTF_8));
// return newFixedLengthResponse(NanoHTTPD.Response.Status.OK, "", msg);
// return new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, mime_type, testReply);
// return NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.OK, mime_type, msg);
// return NanoHTTPD.newFixedLengthResponse(msg);
無。
我也試過此javascript:
$.get("http://127.0.0.1:8080", function(my_var) {
console.log(my_var);
});
如果這是運行我的NanoHTTPD斷點被觸發,但JavaScript方法不會被觸發的。
非常感謝你,這是我失蹤了! – Ian