【问题标题】:Post a Form to a PHP File using XMLHTTPRequest/AJAX使用 XMLHTTPRequest/AJAX 将表单发布到 PHP 文件
【发布时间】:2023-03-30 03:26:01
【问题描述】:

我对PHP有点健忘,有没有更简单的使用JavaScript AJAX发布表单的方法,不想简单地添加jQuery来发布ajax请求,而无需传递参数?

我想通过 Ajax 发布表单,而不必获取参数并在调用中发送它们,这可能吗?以下代码是否有替代方案...

var mypostrequest=new ajaxRequest()
mypostrequest.onreadystatechange=function(){
 if (mypostrequest.readyState==4){
  if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1){
   document.getElementById("result").innerHTML=mypostrequest.responseText
  }
  else{
   alert("An error has occured making the request")
  }
 }
}
var namevalue=encodeURIComponent(document.getElementById("name").value)
var agevalue=encodeURIComponent(document.getElementById("age").value)
var parameters="name="+namevalue+"&age="+agevalue
mypostrequest.open("POST", "basicform.php", true)
mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
**mypostrequest.send(parameters)**

我打算使用 POST 而不是 GET 来隐藏 URL 上发送的内容,这感觉很奇怪,这与使用 GET 相同。还是我读错了?

【问题讨论】:

  • 我知道您说过您不想为此添加 jQuery,但添加 jQuery 确实值得,即使只是为此。简而言之,如果不添加 jQuery,就没有简单的方法可以做到这一点。
  • jQuery 让这一切变得更容易
  • @Pinoniq 在这里并不真正适用...当有人已经为您完成时,您不会重新发明轮子。
  • @Styphon 完全正确。现在告诉我在使用'new XMLHttpRequest()'时重新发明轮子是什么?

标签: php javascript ajax


【解决方案1】:

如果你只想要一些简单的 Ajax,就不要使用 jQuery。

这会很好地完成工作:

// Vanilla
var httpRequest = new XMLHttpRequest()
httpRequest.onreadystatechange = function (data) {
  // code
}
httpRequest.open('GET', url)
httpRequest.send()

所有荣誉转至:https://gist.github.com/liamcurry/2597326

现在我们还可以添加更多浏览器支持(IE6 和更早版本:http://caniuse.com/#search=XMLHttpRequest)@所有那些 jQuery 负责人:jQuery 2 放弃了对 IE8 和更早版本的支持,因此那里没有“额外支持”。

// creates an XMLHttpRequest instance
function createXMLHttpRequestObject()
{
  // xmlHttp will store the reference to the XMLHttpRequest object
  var xmlHttp;
  // try to instantiate the native XMLHttpRequest object
  try
  {
    // create an XMLHttpRequest object
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    // assume IE6 or older
    try
    {
      xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
    }
    catch(e) { }
  }
  // return the created object or display an error message
  if (!xmlHttp)
    alert("Error creating the XMLHttpRequest object.");
  else 
    return xmlHttp;
}

所有荣誉转至:http://www.cristiandarie.ro/asp-ajax/Async.html

这篇文章是由谷歌赞助的(一个非常强大的工具,你输入东西,它会给出更多的答案)

【讨论】:

  • jQuery v2 可能已经放弃了对 jQuery v1.10 的支持,仍然保持它,并且仍然与 v2 一起开发。
  • 我认为你没有抓住重点。我在问是否有一种方法可以进行 AJAX 表单发布,不需要我发送(参数)参数,而是像真正的提交按钮一样工作,我的所有变量都在全局 $_POST 中,我没有想要跳转到另一个页面我只是想要更新同一页面,使用 GET 这非常简单,使用 POST 可以按照上面发布的方式完成,但我正在寻找另一种使用 POST 的方法。
  • 正如 m59 已经指出的那样,您不能在 vanlilla js 中执行此操作。很多框架都有一些特殊的功能来帮助您序列化数据(再次参见 m59)。但是,嘿,为什么是-1?因为我理解错了问题?
  • @Pinoniq:jQ 所做的一切,JS 都做......所以你可以VanillaJS 来做我问题中的代码有点狡猾,但同时我'我在我自己的工具包中完善了表单形式化程序代码(总共 250 行非混淆代码、ajax、事件委托、就绪回调和基本工作人员支持......全部完成![smug]击败那个 jQ![/smug ])
猜你喜欢
  • 1970-01-01
  • 2021-02-08
  • 2012-03-15
  • 1970-01-01
  • 2015-09-15
  • 2016-11-02
  • 2019-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多