代码之家  ›  专栏  ›  技术社区  ›  diggersworld

Ajax XMLHttpRequest日志

  •  14
  • diggersworld  · 技术社区  · 14 年前

    我正在尝试使用post方法编写一个xmlhttprequest。我曾经使用过xmlhttprequest,使用get方法,但在post中遇到了困难。

    这是我的代码:

    var xmlhttp = null;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    var url = "http://www.mysite.com/script.php";
    var params = "var=1";
    xmlhttp.open("POST", url, true);
    xmlhttp.send(params);
    

    它基本上调用一个PHP脚本,然后向数据库添加一些信息。

    2 回复  |  直到 12 年前
        1
  •  49
  •   Marcel Korpel    12 年前

    您忘记显式设置为 Content-type 头,这在执行POST请求时是必需的。

    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    

    另外,不要忘记使用 encodeURIComponent 要正确编码参数,例如:

    var params = "var=" + encodeURIComponent("1");
    

    (在这个特定的例子中,它不是必需的,但是在使用特殊字符时,例如 + 如果不对参数文本进行编码,事情将会非常糟糕。

    更新 _ %20 具有 + ,像

    var params = params.replace(/%20/g, '+');
    
        2
  •  -6
  •   diggersworld    14 年前

    好吧,我已经把它整理好了。

    奇怪的原因是,可能与沙盒安全相关,但我没有完整的URL地址,只是使用了文件的相对路径,现在它可以工作了。

    谢谢大家的支持。