首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >发布Json字符串get NULL

发布Json字符串get NULL
EN

Stack Overflow用户
提问于 2018-05-31 07:03:40
回答 2查看 2K关注 0票数 0

我已经将表单的所有条目转换为对象,然后使用该对象填充数组:

代码语言:javascript
复制
var jsonObj = [];
var formData = new FormData();
$('[name="'+form+'"] *').not(':input[type=file], :input[type=button], :input[type=submit], :input[type=reset], [name="input_search"]').filter(':input').each(function(obj, v) {
    var iObj        = {}
    var input       = $(this);
    var inputname   = input.attr("name");
    var val         = input.val();
    var inputval    = val;
    iObj[inputname] = inputval;
    jsonObj.push(iObj);
});

稍后,我尝试使用以下代码将最终数组转换为Json字符串:

代码语言:javascript
复制
jsonData = JSON.stringify(jsonObj);

我得到了这个字符串:

代码语言:javascript
复制
[{"s-file[]":"Prueba 3"},{"text_file[]":"ORT0000133.pdf"},{"idform":"f-gen-desk"},{"idprocess":"p-save"}]

我把这个发送到PHP Server,因为我用formData.append方法发送了其他元素类型的文件:

代码语言:javascript
复制
formData.append('jsonData', jsonData);
var url = 'index.php';
$.ajax({
    url: url,
    data: formdata,
    contentType: false,
    processData: false,
    type: 'POST',
    cache: false,
    error: function(xhr, status, error) {
        alert(error);
    },
    success: function(response) {
        alert(response);
    }
});

在PHP服务器端,我尝试获取这个字符串:

代码语言:javascript
复制
echo var_dump($_POST['jsonData']);

我得到了这个字符串:

代码语言:javascript
复制
string(169) "[{"s-file[]":"Prueba 3"},{"text_file[]":"ORT0000133.pdf"},{"idform":"f-gen-desk"},{"idprocess":"p-save"}]"

当我尝试将其转换为具有以下内容的数组时:

测试1:

代码语言:javascript
复制
echo '<pre>';
echo var_dump($_POST);
echo '</pre>';

输出:

代码语言:javascript
复制
array(1) {
  ["jsonData"]=>
  string(169) "[{"s-file[]":"Prueba 3"},{"text_file[]":"ORT0000133.pdf"},{"idform":"f-gen-desk"},{"idprocess":"p-save"}]"
}

测试2:

代码语言:javascript
复制
echo '<pre>';
$jsonData=$_POST['jsonData'];
$Data=json_decode($jsonData);
echo var_dump($Data);
echo '</pre>';

输出:我得到了NULL

我不知道我做错了什么

上次更新:

我运行这个测试:

代码语言:javascript
复制
echo '<pre>';
$jsonData   = '|'.$_POST['jsonData'].'|';
$json       = '|'.'[{"s-file[]":"Prueba 3"},{"text_file[]":"casa.jpg"},{"idform":"f-gen-desk"},{"idprocess":"p-save"}]'.'|';
echo $Line = mb_strlen(mb_strcut($jsonData, 0, strspn($jsonData ^ $json, "\0")));
echo '<br>';
echo $jsonData[$Line];
echo '<br>';
echo $json[$Line];
echo '<br>';
echo '</pre>';

输出

代码语言:javascript
复制
3
&
"

我可以确定链已损坏,但我不知道为什么、如何或如何修复它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-07 01:28:26

该问题可能与使用以下各项有关:

代码语言:javascript
复制
$_GET  = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);

https://stackoverflow.com/a/9854121/963200

在从POSTGET读取数据后,我需要解决它并使用它

票数 0
EN

Stack Overflow用户

发布于 2018-05-31 08:16:00

发送json的简单方法是:

代码语言:javascript
复制
$.ajax({
    url: url,
    data: jsonData, // stringified JSON
    contentType: 'application/json',
   // processData: false,
    type: 'POST',
    //cache: false, POST won't cache
    error: function(xhr, status, error) {
        alert(error);
    },
    success: function(response) {
        alert(response);
    }
});

并在php中接收

代码语言:javascript
复制
$data = json_decode(file_get_contents('php://input')[,boolean to force array]);

通常,发送数据的最简单方法是在表单上使用serialize(),并作为默认内容类型发送,并以$_POST[inputName]形式接收各种字段

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50614446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档