php*_*_qq 129 javascript php json http
好的,所以我一直在努力避免使用大多数HTTP协议的属性,或者为了害怕未知,你怎么可能请它们调用它们.但是我告诉自己,我今天将面临恐惧并开始有目的地使用标题.我一直试图在这里实现的是将json数据发送到浏览器并立即使用它.例如,如果我在就绪状态4上有一个ajax处理函数,看起来像这样
function ajaxHandler(response){
alert(response.text);
}
Run Code Online (Sandbox Code Playgroud)
我在我的php中设置了内容类型标题
header('Content-Type: application/json');
echo json_encode(array('text' => 'omrele'));
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么我不能直接从处理函数访问属性,当浏览器被明确告知传入的数据是application/json?
Roc*_*mat 125
该Content-Type头只是作为您的应用程序信息.浏览器并不关心它是什么.浏览器只返回AJAX调用中的数据.如果要将其解析为JSON,则需要自己完成.
标题就在那里,以便您的应用可以检测返回的数据以及应如何处理它.您需要查看标题,如果它application/json然后将其解析为JSON.
这实际上就是jQuery的工作原理.如果你不告诉它如何处理结果,它会使用它Content-Type来检测如何处理它.
小智 15
这是旧的,但对我来说 PHP8 如果字符集设置为示例,它就可以工作。
header('Content-Type: application/json; charset=utf-8');
echo json_encode(array('text' => 'eggs'));
Run Code Online (Sandbox Code Playgroud)
小智 7
Content-Type: application/json只是内容标题,内容标题只是有关返回数据类型的信息,ex :: JSON,图像(png,jpg等),html.请记住,javascript中的JSON是一个数组或对象.如果要查看所有数据,请使用console.log而不是alert
alert(response.text); // Will alert "[object Object]" string
console.log(response.text); // Will log all data objects
Run Code Online (Sandbox Code Playgroud)
如果要将原始JSON警告为字符串,则添加单引号('):
echo "'" . json_encode(array('text' => 'omrele')) . "'";
// alert(response.text) will alert {"text":"omrele"}
Run Code Online (Sandbox Code Playgroud)
不要使用双引号,它会混淆javascript,因为JSON在每个值和键上使用双引号:
echo '<script>var returndata=';
echo '"' . json_encode(array('text' => 'omrele')) . '"';
echo ';</script>';
// It will return the wrong JavaScript code:
<script>var returndata="{"text":"omrele"}";</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
704639 次 |
| 最近记录: |