我是ExtJs和Web技术的新手,我几天要做的就是从我的php文件中获取响应,该响应会向服务器api发出curl请求,并返回一个xml格式对象。当我将此对象单独存储在xml文件中并将ExtJs存储的代理设置为
时proxy: {
type: 'ajax',
url: 'app/apiCalls/data_suites.xml',
autoload: 'true',
autoSync: 'true',
reader: {
type: 'xml',
root: 'data_suites',
record: 'data_suite'
}
}
..它将数据加载到商店中,但是当我将代理更改为返回同一对象的.php文件时,它无法加载数据。
这是带有示例xml返回的.php文件:
$my_endpoint = XXXXXXX //myendpoint defined here
function curlCall($my_url){
$header[] = 'Content-Type: application/x-www-form-urlencoded';
//initializing curl object
$curl = curl_init();
//adding fields to the curl object to enter the site
curl_setopt($curl, CURLOPT_URL, $my_url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_HTTPGET, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 40);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
//executing the curl call and getting data back
$html = curl_exec($curl);
curl_close($curl); // close the connection
return $html;
}
$html = curlCall($my_endpoint);
echo $html;
//even tried returning as simple xml object but didnt work
//$xml = new SimpleXMLElement($html);
//echo $xml
我只更改了我的商店代理中的这一行,以尝试接收.php输出
url: 'app/apiCalls/data_suites.php',
这是我的示例“data_suites.xml”,这与我的浏览器显示的PHP返回为$ html相同。
<?xml version="1.0" encoding="UTF-8"?>
<data_suites>
<data_suite id="6">
<name>Test</name>
<description>Test Described</description>
</data_suite>
<data_suite id="8">
<name>Another Test</name>
<description>Another Test Described</description>
</data_suite>
</data_suites>
谢谢,如果事情不清楚,请告诉我。
答案 0 :(得分:1)
尝试在php脚本中设置标题 像这样:
<?php
.
.
.
$html = curlCall($my_endpoint);
header("Content-type: text/xml");
echo $html;
?>
答案 1 :(得分:1)
您是否尝试将响应标头设置为XML?
在header('Content-type: text/xml');
之前 echo $html;
,因为如果与其他内容类型一起发送,ExtJS的XML阅读器将无法将响应识别为XML。