Php JSON数据未从Ajax调用正确返回

Php JSON数据未从Ajax调用正确返回,php,jquery,json,Php,Jquery,Json,在这段HTML代码中,当名为“nu_protocolo”的输入字段失去焦点时,Ajax代码调用php脚本Ajax.get_data.php <?php ... ... $empregados = array( 'quantidade' => $qt_estagiarios, 'protocolo_ano' =>

在这段HTML代码中,当名为“nu_protocolo”的输入字段失去焦点时,Ajax代码调用php脚本Ajax.get_data.php

    <?php
    ...
    ...

    $empregados = 
        array(
            'quantidade'                    => $qt_estagiarios,
            'protocolo_ano'                 => $estagiario_prot_ano,
            'protocolo_origem'              => $estagiario_prot_origem,
            'protocolo_numero'              => $estagiario_prot_numero

        );

    $rs = json_encode($empregados, JSON_PRETTY_PRINT);
    echo $rs;
HTML代码:

    {
    "quantidade": "2",
    "protocolo_ano": "25",
    "protocolo_origem": "40",
    "protocolo_numero": "65000"
    }
form.html

在HTML代码中显示控制台数据时,会得到与硬编码PHP代码相同的JSON数据。问题是,当您指定一个类似“quantidade”的变量时。提供控制台上显示的未定义值。 我尝试了许多方法来指定变量,但没有得到任何结果:

form.html


您需要在
$.ajax({…})
调用中将
数据类型:'text',
更改为
数据类型:'json',
,因为它定义了响应预处理类型

您需要在
$.ajax({…})中将
数据类型:'text',
更改为
数据类型:'json',
调用,因为它定义了响应预处理类型

您需要确保jQuery将JSON视为JSON

默认情况下,PHP声称它输出HTML,因此您需要:

header("Content-Type: application/json"); 
…表示您正在发送JSON


那么你有这个:

…它告诉jQuery忽略内容类型头并将响应视为纯文本


因此,删除它(或者将其更改为
数据类型:“json”
,告诉jQuery忽略内容类型并将响应视为json。

您需要确保jQuery将json视为json

默认情况下,PHP声称它输出HTML,因此您需要:

header("Content-Type: application/json"); 
…表示您正在发送JSON


那么你有这个:

…它告诉jQuery忽略内容类型头并将响应视为纯文本


因此,删除它(或将其更改为
dataType:'json'
,告诉jQuery忽略内容类型并将响应视为json。

您在
console.log(响应)上有什么;
?上面显示的json数据。
console.log(响应)上有什么;
?上面显示的JSON数据..谢谢!工作正常!!谢谢!工作正常!!问题只存在于
数据类型:'text',
。如果提供了正确的
数据类型
,jQuery将正确处理响应。如果从后端提供了正确的头,则可以忽略
$.ajax()上的
数据类型
属性
call@PavloZhukov-正如我所说,
dataType
会导致jQuery忽略内容类型标题。这并不意味着您仍然应该发送错误的标题。我以前的客户几乎从未将其与
.git
目录一起发送到4年前的project中。但我同意这是一种不好的做法问题只存在于
dataType:'text',
。如果我们从后端提供了正确的
dataType
,jQuery即使没有正确的头,也能正确处理响应。如果我们从
$.ajax()提供了正确的头,我们可以省略
dataType
属性
call@PavloZhukov-正如我所说,
dataType
会导致jQuery忽略内容类型标题。这并不意味着您仍然应该发送错误的标题。我以前的客户几乎从未将其与
.git
目录一起发送到超过4年的project中。但我同意这是一种不好的做法
header("Content-Type: application/json"); 
dataType:       'text',