当前位置: 首页 > 知识库问答 >
问题:

在PHP中解析Javascript读取

宗政昱
2023-03-14

我通过Javascript调用一个帖子请求,看起来是这样的,

function syncDeviceId(deviceID, mod){
  var request = new Request('url', {
    method: 'POST',
    body: JSON.stringify({
        uuid: unique_id,
    }),
    mode: 'cors'
  })

  fetch(request).then(function(data) {
    return
  })

我试图收回这样的价值观,

<?php

$post['uuid'] = $_POST['uuid']; 

?>

这是返回为空,我怎么能从PHP中的获取后请求检索值。谢啦

共有3个答案

步兴德
2023-03-14

您需要回显结果,因此它将在请求正文中返回:

<?php

$post['uuid'] = $_POST['uuid']; 
echo $post['uuid'];
?>

另外,看起来你需要用你调用的php脚本的url实例化你的请求对象

var请求=new请求('my_script.php ', { . . .

无论php脚本在哪里。

高嘉树
2023-03-14

我也有同样的问题。

我首先使用Chrome调试工具来确保我传递的是一个请求体(Chrome调试将其称为“请求负载”)

{ClientDomain: "example.com"}

然后,我在接收PHP脚本中使用了声明的代码。

$json = file_get_contents('php://input');
$data = json_decode($json);

然后将我的JSON代码放入一个数组中,然后用PHP读取。

PRINT $data["ClientDomain"];

我希望这能帮助下一个人。

施旭东
2023-03-14

这是因为您没有将请求的正文设置为正确的格式。

https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#Parameters

body:要添加到请求中的任何主体:可以是Blob、BufferSource、FormData、URLSearchParams或USVString对象。请注意,使用GET或HEAD方法的请求不能有正文。

内容类型标头基于设置为body的对象,或者基于在Header对象中指定的Content-Type(如果提供)。

因此,将body设置为JSON字符串会使内容类型头为text/普通。即使您将请求Content-Type设置为Application/json,也没关系,因为PHP默认不知道如何解析传入的JSON请求有效载荷(除非它最近在PHP 7中添加)。

你可以在客户端做一些事情

从对象中创建FormData对象,并将其用作主体,然后将使用多部分/form内容类型

var data = {some:"data",even:"more"};
var fd = new FormData();
//very simply, doesn't handle complete objects
for(var i in data){
   fd.append(i,data[i]);
}
var req = new Request("url",{
   method:"POST",
   body:fd,
   mode:"cors"
});

创建一个URLSearchParams对象,该对象将内容类型设置为application/x-www-form-urlencoded。注意:URLSearchParams不受广泛支持

//Similar to creating a simple FormData object
var data = {some:"data",even:"more"};
var params = new URLSearchParams();
for(i in data){
   params.append(i,data[i]);
}
var req = new Request("url",{
   method:"POST",
   body:params,
   mode:"cors"
});

创建查询字符串(即a=hello

var data = {some:"data",even:"more"};
var headers = new Headers({
    "Content-Type":"application/x-form-urlencoded"
});
var params = [];
for(i in data){
   params.push(i + "=" + encodeURIComponent(data[i]));
}
var req = new Request("url",{
   method:"POST",
   body:params.join("&"),
   headers:headers,
   mode:"cors"
});

如果您仍然希望发送JSON有效负载而不是执行上述操作,那么您可以,但是您必须读取原始请求输入,然后使用JSON_decode来获取数据

$json = file_get_contents('php://input');
$data = json_decode($json);

 类似资料:
  • 问题内容: 我有以下JSON字符串: 如何在PHP中解析它并提取s 列表? 问题答案: 您可以使用该函数来解析PHP中的JSON数据(至少=> 5.2.0)。一旦有了PHP对象,就可以轻松地遍历所有配方/成员并使用以下内容访问其标题: (对不起,我现在无法真正运行此代码。希望无论如何它都会有所帮助。)

  • 问题内容: 我想解析JavaScript中的JSON字符串。响应就像 我怎样才能获得的值,并从这个? 问题答案: 在JavaScript中解析JSON的标准方法是 该API是在ES5(2011)中引入的,此后按市场份额和Node.js在超过99%的浏览器中已实现。它的用法很简单: 唯一无法使用的时间是您是否在为旧版浏览器编程,例如IE 7(2006),IE 6(2001),Firefox 3(20

  • 问题内容: 我正在尝试在JavaScript中实现CSS的解析,以便: 被解析为对象: 首先,有没有可以使用的JavaScript / jQuery 库 ? 我的实现是非常基本的,因此我确信它绝对不是万无一失的。例如,它对于基本CSS可以正常工作,但对于以下类型的属性可以正常工作: 失败是因为我要分开成对使用。在这里,发生在中,因此它也会在该点分裂。 是否有其他方法可以做到这一点? 这是代码: 谢

  • 问题内容: 我有一个JavaScript文件,我想在其中包含一些php代码。问题是我在PHP上也有一些定义,我也想在JS上使用。 有没有办法在HTML中包含.js文件,从而允许服务器首先使用php解释它(在下载到客户端之前)? 谢谢 :) 问题答案: 在输出任何内容之前,您还需要输出正确的标头,您应该具有以下内容: 编辑:正如@Tony_A指出的,应该是。我认为在2010年写这篇文章时,它并不重要

  • 问题内容: 我知道我们可以使用PHP DOM 来使用PHP解析HTML。我也在堆栈溢出中发现了很多问题。但是我有一个特定的要求。我有如下的HTML内容 我想解析以上HTML并将内容保存到两个不同的数组中,例如: 和 我可以简单地使用jQuery来实现。但是我不确定这是否正确。如果有人能指出我正确的方向,那就太好了。提前致谢。 问题答案: 尝试查看PHP简单HTML DOM解析器 它具有类似于jQu