Php JSON数据未从Ajax调用正确返回
在这段HTML代码中,当名为“nu_protocolo”的输入字段失去焦点时,Ajax代码调用php脚本Ajax.get_data.phpPhp 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' =>
<?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',