AJAX 调用内容类型 Application/json 未从 PHP 检索数据
AJAX call with Content Type Application/json not retrieving data from PHP
我无法从 AJAX 调用中检索 JSON 数据。
我尝试使用 PHP cURL 从不同的网页获取 JSON 数据;这成功了。 PHP 页面是从 Jquery AJAX 调用中调用的。我可以将 JSON 数据作为字符串从其中一个网站获取到 return,但不能从另一个网站获取。
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;
charset:UTF-8
- 这个 JSON 字符串在 AJAX 调用中检索回来
该命令的符号(在#列)在fiddler中显示为<>
2。什么不起作用
- 在另一个站点执行此操作时,CURL 发回 JSON 字符串,但 PHP 中检索 curl 命令的 Content-Type 现在是 applcation/json;字符集;UTF-8。当我在 PHP 中回显此内容时,该对象将不会在 AJAX 中检索。
这里这个命令的符号(在#列)在fiddler中显示为{JSON}。
当我将数据类型修改为"Text"并将内容类型修改为"text/plain ; charset:UTF-8"时,数据(从第2点开始)以文本形式检索;但我想要对象格式的数据。
Relevant AJAX PHP issue 1
Relevant AJAX PHP issue 2
问题终于解决了,
我完全拆除了 PHP cUrl 函数,只留下基本功能。现在 JSON 数据被 returned 到 AJAX 调用。我注意到的是,在执行 cUrl 函数时出现了一些警告(如未定义的变量),但 JSON 数据仍在 PHP 函数中 returned。所以,主要你应该认为警告应该没问题。解决来自 cUrl 函数的警告后,JSON 数据作为 return 正确编辑到 AJAX 调用。换句话说,当出现 PHP 警告时,Ajax 调用不会 return 数据。
我无法从 AJAX 调用中检索 JSON 数据。
我尝试使用 PHP cURL 从不同的网页获取 JSON 数据;这成功了。 PHP 页面是从 Jquery AJAX 调用中调用的。我可以将 JSON 数据作为字符串从其中一个网站获取到 return,但不能从另一个网站获取。
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; charset:UTF-8
- 这个 JSON 字符串在 AJAX 调用中检索回来
该命令的符号(在#列)在fiddler中显示为<>
2。什么不起作用
- 在另一个站点执行此操作时,CURL 发回 JSON 字符串,但 PHP 中检索 curl 命令的 Content-Type 现在是 applcation/json;字符集;UTF-8。当我在 PHP 中回显此内容时,该对象将不会在 AJAX 中检索。
这里这个命令的符号(在#列)在fiddler中显示为{JSON}。
当我将数据类型修改为"Text"并将内容类型修改为"text/plain ; charset:UTF-8"时,数据(从第2点开始)以文本形式检索;但我想要对象格式的数据。
Relevant AJAX PHP issue 1
Relevant AJAX PHP issue 2
问题终于解决了, 我完全拆除了 PHP cUrl 函数,只留下基本功能。现在 JSON 数据被 returned 到 AJAX 调用。我注意到的是,在执行 cUrl 函数时出现了一些警告(如未定义的变量),但 JSON 数据仍在 PHP 函数中 returned。所以,主要你应该认为警告应该没问题。解决来自 cUrl 函数的警告后,JSON 数据作为 return 正确编辑到 AJAX 调用。换句话说,当出现 PHP 警告时,Ajax 调用不会 return 数据。