这是发送GET请求URL的正确语法吗?

时间:2018-12-31 17:48:55

标签: javascript ajax http

要向表中插入值,我尝试了此GET xmlhttprequest对象。 URL中的语法正确吗?它不起作用。

document.getElementById('allsubmit').addEventListener('click',sendPost);
  var com = document.getElementById('inputcompany').value;
  var cat = document.getElementById('selectCategory').value;
  var subcat = document.getElementById('selectsubCategory').value;
  var descrip = document.getElementById('textdescription').value;
  var exp = document.getElementById('datepicker').value;

  function sendPost() {
   var xhr = new XMLHttpRequest();
    xhr.open('GET',"addingthevacancy.php?company='"+com+"'?category='"+cat+"'?subcategory='"+subcat+"'?description='"+descrip+"'?expdate='"+exp,true);

xhr.onprogress = function() {
      //
}

xhr.onload = function() {
    console.log("Processed..."+xhr.readystate);
    console.log(this.responseText);
}

xhr.send();
}

我不知道这是怎么回事。

1 个答案:

答案 0 :(得分:1)

几个问题:

  1. 参数必须用&而不是?分隔。
  2. URL参数不需要用引号引起来。
  3. 参数应使用encodeURIComponent()进行编码。
  4. 您需要获取sendPost()函数内部的输入值;您的代码是在页面首次加载时设置变量,而不是在用户提交时设置变量。
  5. 如果该按钮是“提交”按钮,则需要调用e.preventDefault()以覆盖默认的提交。

通常不建议对服务器上进行更改的请求使用GET,通常应将POST用于这些类型的请求。浏览器缓存GET请求,因此,如果您确实需要这样做,则应添加一个cache-buster参数(一个额外的未使用的参数,该参数包含每次更改的随机字符串或时间戳,只是为了防止URL匹配缓存的网址)。

document.getElementById('allsubmit').addEventListener('click', sendPost);

function sendPost(e) {
  e.preventDefault();
  var com = encodeURIComponent(document.getElementById('inputcompany').value);
  var cat = encodeURIComponent(document.getElementById('selectCategory').value);
  var subcat = encodeURIComponent(document.getElementById('selectsubCategory').value);
  var descrip = encodeURIComponent(document.getElementById('textdescription').value);
  var exp = encodeURIComponent(document.getElementById('datepicker').value);

  var xhr = new XMLHttpRequest();
  xhr.open('GET', "addingthevacancy.php?company=" + com + "&category='" + cat + "&subcategory=" + subcat + "&description=" + descrip + "&expdate=" + exp, true);

  xhr.onprogress = function() {
    //
  }

  xhr.onload = function() {
    console.log("Processed..." + xhr.readystate);
    console.log(this.responseText);
  }

  xhr.send();
}