jQuery.ajax() 的 Javascript 替代方案 - 面临错误

标签 javascript php jquery json

这是 JS 对象

var datas = {
    name: "xyz",
    age:21,
}

var datas2 = JSON.stringify(datas);

下面的 AJAx 请求正确传递数据

 $(function(){
        $.ajax({
            url:'two.php',
            type:'POST',
            dataType:'html',
            data:{data:datas2}
        });
    });

开发者工具中的响应:

Array
(
    [data] => {"name":"xyz","age":21}
)

现在尝试使用Javascript AJAX Reuest

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {

    }
  }
xmlhttp.open("POST","two.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
// xmlhttp.setRequestHeader("Content-type","application/json");
xmlhttp.send(datas2);

开发者工具中的响应:

Array
(
    [{"name":"xyz","age":21}] => 
)

我哪里出错了?

最佳答案

您正在发送两个不同的值。 jQuery 会将对象 {data: datas2} 转换为字符串

data={"name":"xyz","age":21}

xmlhttp.send(datas2)只会发送字符串

{"name":"xyz","age":21}

差别很大啊!在第二种情况下,{"name":"xyz","age":21} 被视为参数name,而不是value,即您使用开发人员工具看到的内容。

如果你想发送相同的有效负载,你必须这样做

xmlhttp.send('data=' + datas2')

关于jQuery.ajax() 的 Javascript 替代方案 - 面临错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31409013/

相关文章:

javascript - jQuery .find ("body").html() == null

php - 当元素通过 mysql 显示时,Jquery 事件不会触发

javascript - 组成长度为 N 的字符串的最有效方法是什么,其中从 a-f、0-9 中选择随机字符

javascript - 用javascript替换正则表达式中的部分文本

php - Laravel whereHas manyToMany 完全匹配

javascript - 如何在javascript中同时选择2张图片?

javascript - Node API框架

javascript - 带刻度的对数 jQuery Bootstrap slider

php - 数据库是为我的 Web 应用程序存储数据的最佳选择吗?

php - 我可以在 PHP 中混合使用 MySQL API 吗?