使用XMLHTTPRequest/AJAX将表单发布到PHP文件

使用XMLHTTPRequest/AJAX将表单发布到PHP文件,php,javascript,ajax,Php,Javascript,Ajax,我对PHP有点健忘,有没有更简单的方法使用JavaScript AJAX发布表单,不想添加jQuery来发布AJAX请求,而不需要传递参数 我想通过Ajax发布表单,而不必获取参数并在调用中发送,这可能吗?是否有以下代码的替代方案 var mypostrequest=new ajaxRequest() mypostrequest.onreadystatechange=function(){ if (mypostrequest.readyState==4){ if (mypostreques

我对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是一样的。还是我读错了?

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

这将很好地完成工作:

// Vanilla
var httpRequest = new XMLHttpRequest()
httpRequest.onreadystatechange = function (data) {
  // code
}
httpRequest.open('GET', url)
httpRequest.send()
所有荣誉归于:

现在我们还可以添加更多的浏览器支持(IE6和更早版本:)@所有这些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;
}
所有荣誉归于:


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

我知道你说过你不想仅仅为了这个而添加jQuery,但它确实值得添加jQuery,即使是为了这个。简而言之,如果不添加jQuery,就没有简单的方法可以做到这一点。jQuery使这一点变得更加容易:@Pinoniq在这里并不真正适用。。。“当有人已经为你做了,你就不会重新发明轮子。”斯泰芬说得没错。现在告诉我,当使用“new XMLHttpRequest()”时,是什么在重新发明轮子?jQuery v2可能已经放弃了jQuery v1.10对它的支持,但它仍然保持着它,并且仍然是沿着v2开发的。我认为您没有抓住要点。我想问的是,是否有一种方法可以做一个AJAX表单帖子,它不需要我发送(参数)参数,而是像一个真正的提交按钮一样工作,我的所有变量都在全局$\u帖子中,我不想跳转到另一个页面,我只想更新同一个页面,使用GET这很简单,使用POST可以通过上面发布的方式完成,但我正在寻找另一种使用POST的方式。正如m59 allready指出的,在vanlilla js中无法实现这一点。很多框架都有一些特殊的函数来帮助您序列化数据(同样,请参见m59)。但是嘿,为什么-1?因为我理解错了这个问题?@Pinoniq:jQ做的每件事,JS都做。。。所以你可以用我问题中的代码来做这件事有点难,但与此同时,我已经在自己的工具包中完善了表单形式化程序代码(总共250行非模糊代码、ajax、事件委托、就绪回调和基本工作支持……所有这些![smug]击败了jQ![/smug])