如何在不打开新页面的情况下将javascript变量传递给php

时间:2013-07-06 13:50:41

标签: javascript html

我让用户在表单中输入值,onClick()激活一个函数,该函数接受用户粘贴的URL并将其剪切(使用我制作的算法,但这是无关紧要的)。我最终得到一个11个字符的字符串,我不知道如何将其提交到一个提交到我的数据库的php页面。我现在这样做的方式是将浏览器带到一个新页面,我希望用户保持在同一页面上。

function findvideoid(){
   window.location.href = 'submitvid.php?videoID=' + videoID;
}

4 个答案:

答案 0 :(得分:3)

纯JavaScript解决方案(推荐):

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
  if (xhr.readyStatus == 4) { // finished
    if (xhr.status == 200) { // 200 HTTP code returned by server
    }
    else { // error
    }
  }
};
xhr.open("GET", "your-script.php?videoID=" + encodeURIComponent(videoID));
xhr.send(null);

jQuery解决方案(如果您已在项目中使用jQuery或者想要尝试使用jQuery,则建议使用):

// PHP script can access $_GET['videoID']
jQuery.get("your-script.php?videoID=" + encodeURIComponent(videoID));

// PHP script can access $_POST['videoID']
jQuery.post("your-script.php", {videoID: videoID});

jQuery.get( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )

jQuery.post( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )

答案 1 :(得分:2)

如何通过加载外部html资源来屏蔽实际的ajax调用呢? 如果不需要真正的回调,您可以将iframe注入指向指定URL的文档中,然后将其从文档中删除。

以下是通过加载图片来访问后端的api url的示例:

function findvideoid(id, callback){
    var img = new Image();
    img.onload = callback;
    img.src = apiUrl + '?videoId=' + encodeURIComponent(id) 
              + '&antiCache=' + new Date().getTime();
}

没有ajax。没有其他的libs。谷歌为它的分析做到了这一点。你为什么不呢?

答案 2 :(得分:-1)

使用AJAX:

function findvideoid()
{
  var html = $.ajax({
    type: "POST",
    url: "submitvid.php",
    data: "videoID=" + videoID,
    async: false
  }).responseText;

  if(html == "success")
  {     
    // Uncomment the following line in your application
    //return true;
  }
  else
  {     
      return false;
  }
}

答案 3 :(得分:-2)

您可以在jQuery中轻松完成此操作

$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});