我是Symfony2的新手。现在我想使用Symfony2实现我之前的ajax调用练习。
我想对服务器端代码进行ajax调用并获取XML响应并将其解压缩。这就是我的工作。
var data={
type:'1'
};
jQuery.ajax({
url: 'server_script/check.php', //load data
global: false,
type: "POST",
dataType: "xml",
data: data,
async: false,
success: load_data2
});
在 flat php 文件中,我可以捕获并使用
$type=$_POST['type'];
在 Symfony2 中,我正在使用
进行AJAX调用 jQuery.ajax({
url: '{{ path('create_label') }}', //load data
global: false,
type: "POST",
dataType: "xml",
data: data,
async: false,
success: load_data2,
error: problem
});
在来自create_label的Controller中,我使用
捕获它$type->request->get('type');
我不确定它是否真的有效。从这个链接Link
获得接下来在 flat PHP 中,我通过
生成XML响应 header("Content-type: text/xml");
echo "<?xml version=\"1.0\" ?>\n";
echo "<Loadinglist>\n";
echo "</Loadinglist>";
它给了我一个用function load_data2(xmlindata)
方法提取的回复。
现在我无法在Symfony2中进行任何有效的XML响应。我尝试了一些技巧,但没有一个在起作用。 我想从Controller发送XML响应,捕获它并使用load_data2
方法提取。如果你有时间,请提供一个wiki类型的答案,说明xml响应的工作方式。
(N.B。在平面php 我可以在控制台或firebug中查看XML响应,我是否可以在 Symfony2 中查看相同内容)
答案 0 :(得分:5)
要获取POST参数,最好明确并使用$request->request->get('type')
。这只会获得POST参数'type'而不是GET参数'type'。
接下来,控制器始终返回Response
。这个类可以看作是真正的HTTP响应的PHP端口。所以你可以调整它来返回XML。
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class YourController // ...
{
function someAction(Request $request)
{
// ...
$response = new Response(<<<EOX
<?xml version="1.0" ?>
<Loadinglist>
</Loadinglist>
EOX
);
$response->headers->set('Content-Type', 'text/xml');
}
}