首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用内容类型Application/json的AJAX调用不从PHP检索数据

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

Stack Overflow用户
提问于 2015-01-05 12:55:26
回答 1查看 1.3K关注 0票数 0

我很难从AJAX调用中检索JSON数据。

我尝试用PHP从不同的网页中获取JSON数据;这是成功的。PHP页面是通过Jquery调用调用的。我可以将JSON数据作为字符串从其中一个网站返回,而不是从另一个网站返回。

jQuery

代码语言:javascript
复制
    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;
        }
    });

代码语言:javascript
复制
<?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. 的工作原理

  • 对PHP的AJAX调用,它正在执行CURL调用
  • Curls返回一个JSON字符串,内容类型: text/html;charset:UTF-8
  • 这个JSON字符串在AJAX调用中被检索回来

此命令的符号(在#列中)在fiddler中显示为<>

2.不起作用的

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

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

当我将数据类型修改为"Text“,将Content修改为”text/平原;charset:UTF-8“时,数据(从第2点开始)将被撤回为文本;但我希望数据以对象格式。

Relevant AJAX PHP issue 1

Relevant AJAX PHP issue 2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-03 09:30:29

最后,解决了这个问题,我以只剩下基本功能的方式,完全撕毁了PHP函数。现在,JSON数据返回给AJAX调用。我注意到,在执行cUrl函数时(比如未定义的变量)有一些警告,但是JSON数据仍然返回到PHP函数中。所以,初级你应该认为警告应该是没有问题的。解析来自cUrl函数的警告后,JSON数据将正确地返回到AJAX调用。换句话说,当发生PHP警告时,Ajax调用将不会返回数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27779993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档