gpt4 book ai didi

javascript - 如何让 NanoHTTPD 响应 AJAX

转载 作者:行者123 更新时间:2023-11-29 10:37:48 25 4
gpt4 key购买 nike

我试图让 NanoHTTPD(在 Android 设备上)以请求 javascript 可以解释响应的方式响应 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 格式。

但我坚持的是,如果我使用来自 javascript 的 AJAX 来尝试传递数据:

$.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,但是当它发送响应时,它只会触发错误/失败方法,并且方法参数从不包含任何内容——我无法设置状态或返回消息或任何东西。

我尝试了 Serve 方法的不同返回值,包括:

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 方法。

最佳答案

我认为您需要在服务器响应中添加这些 header :

    Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Max-Age: 86400

关于javascript - 如何让 NanoHTTPD 响应 AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34039392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com