【问题标题】:Is there a possibility to use POST in an Ajax call instead of GET (Only Javascript solution)是否有可能在 Ajax 调用中使用 POST 而不是 GET(仅限 Javascript 解决方案)
【发布时间】:2013-06-20 11:12:59
【问题描述】:

在这个 JavaScript 示例以及我在网络上可以找到的所有内容中:

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();

JavaScript 示例代码总是使用GET...

我知道 JQuery 可以使事情变得非常简单,而且我知道它可以与 JQuery 一起使用,但可能我不想为此使用 JQuery(因为 jquery.js 的大小开销)

所以问题很简单,有没有使用POSTGET 的选项? (POST 比 GET 有更多的优势) 如果是这样,为什么有人会使用 GET?

【问题讨论】:

  • 你在xmlhttp.open("GET","ajax_info.txt",true); 命令中没有提到GET 吗?
  • @Amberlamps:回答后似乎微不足道,我不确定只有换行才能完成这项工作......现在没有选择尝试,所以我问......对不起如果它打扰到你...
  • @czupe:好吧,我的意思是,当您只需要在 Google 中输入 ajax get post 时,您已经付出了所有努力来创建和编写问题。
  • 这些答案大多与 JQuery 相关:S 和我需要 JS。但你说得对,我可以得到第二个问题的答案......谢谢......

标签: javascript ajax


【解决方案1】:

是的,有。见specification。 (我不发布代码,因为我认为您可以自己处理将 'GET' 更改为 'POST' ...)

为什么要使用 GET?由于SOP 问题(JSONP = GET)或者因为您使用了非常严格的 REST 元数据,其中 POST 仅用于创建,GET 用于接收,PUT 用于更新,而 DELETE 用于删除项目。

【讨论】:

  • 接受了这一点(因为你回答了我的另一个问题,感谢它)并赞成所有答案。谢谢大家!
  • @czupe 不想粗鲁,但你没有 ;-)
【解决方案2】:

使用xmlhttp.open("POST","ajax_info.txt",true);

【讨论】:

    【解决方案3】:

    有,

    var r = new XMLHttpRequest(); 
    r.open("POST", "path/to/api", true); 
    r.onreadystatechange = function () { 
       if (r.readyState != 4 || r.status != 200) 
          return; 
    
        alert("Success: " + r.responseText); 
    }; 
    r.send("banana=yellow");
    

    示例取自 vanilla-js。使用 vanillajs,它只有 0kb 并且免费 :)

    【讨论】:

    • vanillajs 不是工具包、库或框架……它只是纯 JavaScript(浏览器实现,带有 DOM api)。文档链接只是链接到 MDN
    【解决方案4】:

    是的,有……here's an example

    基本上,您必须像这样打开连接:

    xmlhttp.open('post','script/url',true);
    xmlhttp.send('data=foo&bar=foobar');//data here
    

    当然,你最好设置几个标题:

    xmlhttp.open('post','script/ur',true);
    xmlhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    xmlhttp.onreadystatechange = function()
    {
        if (this.readyState === 4 && this.status === 200)
        {
            console.log(this.responseText);//do whatever
        }
    };
    xmlhttp.send('data=foo&bar=foobar');//data here
    

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多