javascript - 基本 "Raw"Ajax 调用

标签 javascript jquery ajax xml http

我有一个服务器端函数:

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/

相关文章:

javascript - 当我点击任何子 div 时,我必须触发父 div 吗?

javascript - 当复选框选中时如何单击不同 div 的标签?

javascript - 转换为单例

php - 需要 $.ajax 函数的帮助 - 如何发送关联数组?

php - 无法让 ajax 发布工作

javascript - 使用准备好的语句 DB2 时获取 SQLCODE=-313

javascript - 如何解决跨域请求被阻塞?

javascript - 加载外部页面时显示图像

javascript - 如何通过 jQuery 在 iframe 内移动元素?

javascript - jQuery post 返回多维数组