【发布时间】:2015-03-03 00:26:12
【问题描述】:
我在从 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 调用中检索回
该命令的符号(#列)在fiddler中显示为
2。什么不起作用
- 在另一个站点上执行此操作时,CURL 会返回一个 JSON 字符串,但 PHP 中检索 curl 命令的 Content-Type 现在是 applcation/json;字符集;UTF-8。当我在 PHP 中回显此内容时,该对象将不会在 AJAX 中检索。
这里该命令的符号(在#列中)在fiddler中显示为{JSON}。
当我将数据类型修改为“文本”并将内容类型修改为“文本/纯文本;字符集:UTF-8”时,数据(从第 2 点开始)以文本形式检索;但我想要对象格式的数据。
【问题讨论】:
-
请添加您的 php 代码。
-
你似乎有三个不同的脚本(一个 JavaScript 脚本,一个使用 CURL 发出 HTTP 请求的 PHP 脚本和另一个响应第一个 PHP 脚本的 PHP 脚本 - 我不知道 JS正在与第一个或第二个 PHP 脚本对话)
-
您的 JavaScript 没有多大意义。您正在尝试设置 Content-Type 请求标头,但您正在发出 GET 请求(因此没有描述类型的内容)并且您没有将数据格式化为 JSON。
-
添加类型:"POST",在php中使用$_POST
-
@DilipGodhani —
$_POST不会为 JSON 请求填充。