我有一个服务器端函数:
string foo(string input_string);
例如:
foo("bar") returns "baz"
并将此函数包装到 HTTP 服务器中,这样:
POST /foo HTTP/1.1
...
bar
将返回:
HTTP/1.1 200 OK
...
baz
即以输入字符串作为 HTTP 消息体的 POST 请求将返回输出字符串作为 200 OK 的 HTTP 消息体。
现在在网页上的 javascript 中我有两个函数:
function sendFoo(input_string)
{
??? // should asynchronously start process to POST input_string to server
}
function recvFoo(output_string)
{
...
}
当我调用 sendFoo 时,我希望将 POST 异步发送到服务器,稍后当收到响应时,我希望使用 200 OK 的消息正文调用 recvFoo(可能在另一个线程或其他线程中)。
如何实现上面的 sendFoo?我目前正在使用 jQuery,但纯 javascript 中的解决方案也可以。 (如果需要我也可以修改服务器?)
解决方案:
function sendFoo(input_string)
{
$.ajax({ url: "/foo", type: "POST", data: input_string, success: recvFoo });
}
最佳答案
XMLHttpRequest
对象的 open()
方法允许您指定 HTTP 方法,而 send()
方法允许指定消息正文,例如
var xhr = ... // obtain XMLHttpRequest object
xhr.open('POST', '/foo'); // HTTP method and requested URL.
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
recvFoo(xhr.responseText); // Will pass 'baz' to recvFoo().
}
};
xhr.send('bar'); // Message body with your function's argument.
关于javascript - 基本 "Raw"Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9143013/