在具有多级对象的 JavaScript 中发布请求
post request in javascript with multilevel object
当我尝试发送的对象是多级时,我会疯狂地向 php 网络服务文件发布一个 json 请求。 即:
postdata = {
name:"francesco"
, age:58
, address : {
street:"my Street"
, number: 42
, city:"London"
}
}
我已经尝试了网络上的所有示例,但是,当我在php Web服务上读取$ _POST数据时,发生了两件事:如果我使用 JSON.stringify,我不会得到任何 $_POST 或 $_GET 的东西,这取决于我使用什么方法,我必须读取 file_get_contents('php://input'),然后json_decode它(而从 php 调用 webservce,我在我的 $_GET 或 $_POST 全局中整齐地获取信息),如果我使用我找到的其他方法,我会得到名称和年龄,但地址显示为"[对象对象]"。
我的问题是,是否可以在不使用jquery的情况下:- 在JavaScript中创建一个对象(多级或正确的术语)- 使用 "XMLHttpRequest()" 对象将其发布到 php ws?- 使用 $_GET 或 $_POST 全局变量从 PHP 读取它(取决于使用的方法)?
我已经发疯了超过96个小时了!!
谢谢!弗朗切斯科
这里有太多不正确的答案。
-
要将嵌套对象发布到PHP脚本中,您可以使用纯js:
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://yourwebsite.com/yourscript.php");
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.send({"data":postData});
-
阅读信息服务器端
$postData = $_POST["数据"];
当我查看PHP实际上给了我什么error_log(print_r($_POST['test'], true))
我得到了
Array
(
[name] => francesco
[age] => 58
[address] => Array
(
[street] => my Street
[number] => 42
[city] => London
)
)
一切都在那里。
问题 #1
是否可以在JavaScript中创建对象(多级或正确的术语)
这是你在javascript中创建对象的方式:
var o = {
foo: "bar"
};
问题 #2
是否可以使用 "XMLHttpRequest()" 对象将其发布到 php ws?
在网上不难找到它:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest
代码如下所示:
var oReq = new XMLHttpRequest();
oReq.open("POST", "http://www.example.org/target");
oReq.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
oReq.send(JSON.stringify(postdata));
问题 #3
是否可以使用 $_GET 或 $_POST 全局变量(取决于使用的方法)从 PHP 读取它?
不,你不能。正如文档所说,$_POST
是:
当使用application/x-www-form-urlencode或multipart/form-data作为请求中的HTTP Content-Type时,通过HTTP POST方法传递给当前脚本的变量的关联数组。
因此,仅当您传递表单编码数据时,$_POST
才可用。由于您要传递 JSON,因此您应该自己解析请求正文。
据我了解,除非是表单,否则不可能从jscipt将数据发布到php。 但我可以这样做:
if ($_POST != null)
$req = $_POST;
else {
$json = file_get_contents('php://input');
$req = json_decode($json, true);
}
.. 然后只需阅读$req..
这是很脏还是司空见惯??
- ajax请求的顺序总是不同的
- Meteor如何接收HTTP请求
- 有没有一种方法可以防止img get请求使用css或js发生
- 从ajax请求中获取javascript对象
- JSONP请求返回结果,但也触发error_callback
- 在localhost Dev Box上测试JSONP请求的最佳方式
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 在openshift node js应用程序中获取请求
- 反应路由器弄乱了请求网址
- 在我的情况下,如何进行http请求
- 使用密码对话框Javascript请求帮助
- servlet中的请求对象,而不是从jsp接收参数值
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- JavaScript代码未正确检查ajax请求
- Ajax在NodeJS中为一个耗时的请求请求多次重试
- 发送带有角度的请求 - 请求中的空元素
- 如何在 Rails 3 中使用 ajax 请求请求 html 页面
- 流式传输“请求”请求的正确方式