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

如何读取异步调用中传递给php的数组

万嘉石
2023-03-14

我在js脚本中有以下内容:

let skippers = {};
for(let i = 0; i < skipperIds.length;i++){
    skippers[skipperIds[i].value] = skipperIds[i].checked;
}

regData.skippers = skippers;          
responseData = sendData2('https://sailwbob.com/lagin/public/register.php',regData);

其中sendData2是使用axios的异步调用。船长看起来像

{1:true,20:false}

在我的php文件中,我有:

$skippers = ($_POST['skippers']);           
            
$skipperIds = array_keys($skippers);
$skipperValues = array_values($skippers);

但这是行不通的。我认为php会将$\u POST中的数组转换为字符串,但我不确定。

两个问题:

  1. 如何将$skipper转换回数组
  2. 我一直在尝试使用print\r查看服务器上的数据,但由于这是一个异步调用,它无法工作,因为print\r结果被发送回js脚本,而不是在屏幕上打印出来。有没有办法查看打印结果

更新:

我尝试了$x=json\u解码($\u POST);但收到一个错误,表示它应为字符串。

以下是对axios的呼叫:

function sendData2(url,emailPass){

    let bodyFormData = new FormData()
    for (const [key, value] of Object.entries(emailPass)) {
        //console.log(key,value)
        bodyFormData.append(key,value)
    }

    return axios({
            method: 'POST',
            url: url,
            data: bodyFormData,
            headers: {'Content-Type': 'multipart/form-data'}
            })
                .then(function(response){
                    return response.data
                })
                .catch(function(response){
                    return response
                })
}

更新2:

$skippers显示$skippers=[object]。有没有办法将其正确发送到服务器?

共有2个答案

谭翰海
2023-03-14

虽然axios会自动对数据进行字符串化,但对于嵌套数组显然不会这样做。我需要补充:

 regData.skippers = JSON.stringify(skippers); in my js 

然后在php文件中

$skippers = get_object_vars(json_decode($_POST['skippers']));
樊运乾
2023-03-14

正如本文所讨论的,axios将Javascript对象序列化到JSON,并且由于PHP不支持JSON作为填充$_POST的数据格式,您可以像这样在PHP中检索它们:

$_POST = json_decode(file_get_contents("php://input"),true);
$skippers = $_POST['skippers'];
 类似资料:
  • 问题内容: 我确定我的问题是基于对node.js中的异步编程缺乏了解,但这是可行的。 例如:我有一个要爬网的链接列表。当每个请求都返回时,我想知道它的URL。但是,大概是由于竞争条件造成的,每个请求都将URL返回设置为列表中的最后一个值。 预期产量: 实际输出: 所以我的问题是: 如何将url(按值)传递给回调函数?要么 链接HTTP请求以使其顺序运行的正确方法是什么?要么 我还缺少什么? PS:

  • 问题内容: 我目前有一个AngularJS ,它基本上是通过调用异步获取的,然后将获取的数据链接到某个范围变量。 代码的恢复版本: 然后,我有一个自定义,它通过一个元素接收那些相同的作用域变量。 代码的恢复版本: 的恢复版本: 问题是,由于是异步的,因此该指令已被严重初始化(例如:未定义)。 尽管找到了一些似乎可以解决此问题的解决方案,但我找不到能为我解决该问题的任何方法。即,我试图观察变量,仅在

  • 问题内容: 当有字符可用时,是否有一种优雅的方法来触发事件?我想避免投票。 问题答案: 您将必须创建一个单独的线程以阻止读取,直到有可用的线程为止。 如果您不想实际消耗输入,则必须用内部缓冲区包装它,读入缓冲区,然后喊叫,并在要求输入时从缓冲区返回数据。 您可以这样解决:

  • 问题内容: 我有一个异步函数,要连续多次调用。问题是“多个”可以是几十万或数百万… 显而易见的方法是从回调中调用相同的函数,如下所示: 当然,涉及一些逻辑来停止递归。问题是堆栈是否充满了调用,并可能在某些时候导致堆栈溢出? 问题答案: 问题是堆栈是否充满了调用,并可能在某些时候导致堆栈溢出? 否。 如果调用回调是异步传递的,则不会堆积堆栈。 在您的代码中: 这是逐步发生的事情: 首先被称为。 然后

  • 问题内容: 如果这个解释不清楚,我很抱歉,我也很难理解。 如何使用PHP和Ajax将数组发送到Javascript? 我正在使用Ajax来获取照片阵列,然后希望将其追加到页面上的空白处。 jQuery如下所示: PHP函数getPhotos如下所示: 如果仅将数据发送到成功回调,但它似乎不是可用的格式。 如果我在PHP中执行,结果将类似于: 我已经尝试过诸如此类的各种组合,但实际上我在猜测并且不确

  • 我创建了一个输入值的表单,然后jQuery将读取这些值。此时,jQuery将对PHP文件进行ajax调用,该文件必须将文章上传到MySQL(它已经这样做了)。问题是,我找不到一种方法来传递图像的tmp到PHP使其读取。 第一个代码:表单 读取对象jQuery: 我无法将照片发送到PHP文件并通过将其恢复。