我在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中的数组转换为字符串,但我不确定。
两个问题:
更新:
我尝试了$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]。有没有办法将其正确发送到服务器?
虽然axios会自动对数据进行字符串化,但对于嵌套数组显然不会这样做。我需要补充:
regData.skippers = JSON.stringify(skippers); in my js
然后在php文件中
$skippers = get_object_vars(json_decode($_POST['skippers']));
正如本文所讨论的,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 ,它基本上是通过调用异步获取的,然后将获取的数据链接到某个范围变量。 代码的恢复版本: 然后,我有一个自定义,它通过一个元素接收那些相同的作用域变量。 代码的恢复版本: 的恢复版本: 问题是,由于是异步的,因此该指令已被严重初始化(例如:未定义)。 尽管找到了一些似乎可以解决此问题的解决方案,但我找不到能为我解决该问题的任何方法。即,我试图观察变量,仅在
问题内容: 当有字符可用时,是否有一种优雅的方法来触发事件?我想避免投票。 问题答案: 您将必须创建一个单独的线程以阻止读取,直到有可用的线程为止。 如果您不想实际消耗输入,则必须用内部缓冲区包装它,读入缓冲区,然后喊叫,并在要求输入时从缓冲区返回数据。 您可以这样解决:
我创建了一个输入值的表单,然后jQuery将读取这些值。此时,jQuery将对PHP文件进行ajax调用,该文件必须将文章上传到MySQL(它已经这样做了)。问题是,我找不到一种方法来传递图像的tmp到PHP使其读取。 第一个代码:表单 读取对象jQuery: 我无法将照片发送到PHP文件并通过将其恢复。
问题内容: 我有一个异步函数,要连续多次调用。问题是“多个”可以是几十万或数百万… 显而易见的方法是从回调中调用相同的函数,如下所示: 当然,涉及一些逻辑来停止递归。问题是堆栈是否充满了调用,并可能在某些时候导致堆栈溢出? 问题答案: 问题是堆栈是否充满了调用,并可能在某些时候导致堆栈溢出? 否。 如果调用回调是异步传递的,则不会堆积堆栈。 在您的代码中: 这是逐步发生的事情: 首先被称为。 然后
问题内容: 使用异步模块时,如何将参数从上一个回调传递到下一个回调? 这是来自github上的文档的示例 问题答案: 您可以将异步函数与异步模块的函数链接在一起。这使您可以说:“先执行x,然后将结果传递给函数y,然后将结果传递给z”。从[docs] [1]复制: 您严格不需要异步模块来完成此任务;此功能旨在使代码更易于阅读。如果您不想使用异步模块,则始终可以只使用传统的回调。