内容类型Application / json的AJAX调用不从PHP检索数据

时间:2015-01-05 12:55:27

标签: php jquery ajax json curl

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

我尝试使用PHP cURL从不同的网页获取JSON数据;这成功了。从Jquery AJAX调用调用PHP页面。我可以将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。什么有效

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

此命令的符号(在#列中)显示为&lt;&gt;在提琴手

2。什么行不通

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

此命令的符号(在#列中)在fiddler中显示为{JSON}。

当我将数据类型修改为“文本”并将内容类型修改为“text / plain; charset:UTF-8”时,数据(从第2点开始)将在文本中进行检索;但我希望数据采用对象格式。

Relevant AJAX PHP issue 1

Relevant AJAX PHP issue 2

1 个答案:

答案 0 :(得分:0)

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