Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP AJAX Json发送对象错误_Php_Ajax - Fatal编程技术网

PHP AJAX Json发送对象错误

PHP AJAX Json发送对象错误,php,ajax,Php,Ajax,我创建了这个对象,然后使用ajax发送数据抛出方法POST: var workerEdit = { id: id, name: $('#workers_response input[name="name"][data-id="gear-'+id+'"]').val(), photo: $('#workers_response input[name="pas-scan"][data-id="gear-'+id+'"]')[0].files[0], bibliog

我创建了这个对象,然后使用ajax发送数据抛出方法POST:

var workerEdit = { 
    id: id, 
    name: $('#workers_response input[name="name"][data-id="gear-'+id+'"]').val(),
    photo: $('#workers_response input[name="pas-scan"][data-id="gear-'+id+'"]')[0].files[0],
    bibliography: $('#workers_response textarea[name="bibliography"][data-id="gear-'+id+'"]').val(),
    history: $('#workers_response textarea[name="history"][data-id="gear-'+id+'"]').val(), 
    salary: $('#workers_response input[name="salary"][data-id="gear-'+id+'"]').val()
}
在php中,我使用:

$.ajax({
    type: "POST",
    url: "/admin-workers/edit_worker.php",
    data: 'edit_worker='+JSON.stringify(input_data),

    success: function(data) { 
        var obj = JSON.parse(data); 
        if(obj.error === undefined) { 
            console.log(obj); 
            if(obj.data === null) { 
                alert("Успех"); 
            } 
        } 
        else { 
            alert("Ошибка: "+obj.error); 
            console.log(obj); 
        } 
    }, 
});

为什么php不能获取对象?

您正在使用变量workerEdit创建一个对象,但是您正在从输入数据发布数据。由于变量名不正确,您似乎没有发布任何数据。

您的数据未正确序列化。您不能只是将JSON映射字符串化并将其发布为
'edit\u worker='+JSON.stringify(input\u data)
它应该如下所示:

$edit_worker = json_decode($_POST['edit_worker']);
$test = $edit_worker->name;
在后端,您将通过其键提取单个值:

key1=value1&key2=value2&key3=value3

您的验证可能需要包含的不仅仅是trim,这取决于数据源是什么以及您正在使用它做什么,但这是另一个讨论

在浏览器的调试工具中,AJAX请求的实际细节是什么?这是邮寄请求吗?数据是什么样子的?在服务器端代码中,如果
$\u POST['edit\u worker']
不包含有效的JSON,它是否包含任何内容?它的原始内容是什么?显示完整的代码,这两行ajax代码不够。可能
数据
应该是键值对象,而不是字符串。查看请求。检查开发工具中的网络选项卡,查看请求的状态…添加了更多信息
If ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $val1 = ( isset($_POST['val1']) ) ? trim($_POST['val1']) : '';
    $val2 = ( isset($_POST['val2']) ) ? trim($_POST['val2']) : '';
    // etc. etc. 

}