使用内容类型应用程序/json 的 AJAX 调用不从 PHP 检索数据


AJAX call with Content Type Application/json not retrieving data from PHP

我从 AJAX 调用中检索 JSON 数据时遇到问题。

我尝试使用PHP cURL从不同的网页获取JSON数据;这很成功。PHP 页面是从 Jquery AJAX 调用调用的。我可以获取 JSON 数据以字符串形式从其中一个网站返回,但不能从另一个网站返回。

jQuery

    var formData = {"data1" : a, "data2" : b, "data3" : c};
    $.ajax({
        dataType: "json",
        contentType : "application/json; charset=UTF-8",
        url: '/getjson.php',
        data : formData,
        success: function(response) {
            CurrentArray = response;
        }
    });

.PHP

<?php
//select webpage to get JSON from
switch ($_GET['data1']){
    Case 1: 
        $result = get_with_curl($webpage1);//select webpage 1
    break;
    Case 2: 
        $result = get_with_curl($webpage2);//select webpage 1
    break;
}
echo $result['FILE'];
?>

1. 什么有效

  • 对正在执行 CURL 调用的 PHP 的 AJAX 调用
  • curls 发回一个 JSON 字符串,内容类型为 : text/html;字符集:UTF-8
  • 此 JSON 字符串在 AJAX 调用中检索回

此命令的符号(在 # 列中)在小提琴手中显示为<>

2. 什么不起作用

  • 在另一个站点执行此操作时,CURL 会发回一个 JSON 字符串,但 PHP 中检索 curl 命令的内容类型现在是 applcation/json; 字符集;UTF-8。当我在 PHP 中回显这一点时,该对象不会在 AJAX 中检索。

在这里,此命令的符号(在 # 列中)在小提琴手中显示为 {JSON}。

当我将数据类型修改为"文本"并将内容类型修改为"文本/纯文本;字符集:UTF-8",数据(从第 2 点开始)以文本形式检索;但我想要对象格式的数据。

相关 AJAX PHP 问题 1

相关 AJAX PHP 问题 2

终于解决了问题,我完全拆除了PHP cUrl函数,只剩下基本功能。现在,JSON 数据将返回到 AJAX 调用。我注意到的是,在执行 cUrl 函数时有一些警告(如未定义的变量),但 JSON 数据仍然在 PHP 函数中返回。因此,首先您应该认为警告应该没有问题。解决来自 cUrl 函数的警告后,JSON 数据将正确返回到 AJAX 调用。换句话说,当发生 PHP 警告时,Ajax 调用不会返回数据。