3

可能重复:
没有框架的 javascript ajax 请求

如何在不使用 JQuery 或任何其他库但仅使用 JavaScript 内置函数的情况下进行下面的 JQuery Ajax 调用?

var input = '{
    "age":100,
    "name":"foo",
    "messages":["msg 1","msg 2","msg 3"],
    "favoriteColor" : "blue",
    "petName" : "Godzilla",
    "IQ" : "QuiteLow"
}';
var endpointAddress = "http://your.server.com/app/service.svc";
var url = endpointAddress + "/FindPerson";
$.ajax({
    type: 'POST',
    url: url,
    contentType: 'application/json',
    data: input,
    success: function(result) {
        alert(JSON.stringify(result));
    }
});
4

4 回答 4

3

jQuery 很好地规范了 ajax 调用浏览器之间的所有小怪癖和细微差别。

我建议找到一个独立的 ajax 库,它可以做同样的事情,但没有 jQuery 带来的所有额外开销。这里有几个:

于 2012-12-18T13:51:17.597 回答
2

试试这个例子

首先,您必须创建对象window.XMLHttpRequest或 ActiveXObject(对于 IE)

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

然后你可以发送请求

xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();

终于可以得到回应了

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
于 2012-12-18T13:36:49.313 回答
2

下面的代码完成了您的 jQuery 版本所做的一切:

  • 使用 JSON 作为 postdata 的 POST 请求
  • 设置 JSON 内容类型标头
  • 提醒字符串化的响应

代码:

  var httpRequest;

  function makeRequest(url, input) {
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
      httpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
      try {
        httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
      } 
      catch (e) {
        try {
          httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        } 
        catch (e) {}
      }
    }

    if (!httpRequest) {
      alert('Giving up :( Cannot create an XMLHTTP instance');
      return false;
    }
    httpRequest.onreadystatechange = function(){
        if (httpRequest.readyState === 4) {
          if (httpRequest.status === 200) {
            alert(JSON.stringify(httpRequest.responseText));
          }
        }
    };

    httpRequest.open('POST', url);
    httpRequest.setRequestHeader('Content-Type', 'application/json');
    httpRequest.send(input);
  }

var input = '{
    "age":100,
    "name":"foo",
    "messages":["msg 1","msg 2","msg 3"],
    "favoriteColor" : "blue",
    "petName" : "Godzilla",
    "IQ" : "QuiteLow"
}';
var endpointAddress = "http://your.server.com/app/service.svc";
var url = endpointAddress + "/FindPerson";
makeRequest(url, input);

部分取自MDN

于 2012-12-18T13:40:45.087 回答
0

看看谷歌在这里的第一个答案。

于 2012-12-18T13:40:37.200 回答