Ajax调用Controller和XML响应Symfony2

Ata*_*CSE 0 php xml ajax jquery symfony

我是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
        });
Run Code Online (Sandbox Code Playgroud)

平坦的PHP文件中,我可以捕获并使用

$type=$_POST['type'];
Run Code Online (Sandbox Code Playgroud)

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
                    });
Run Code Online (Sandbox Code Playgroud)

在来自create_label的Controller中,我使用它来捕获它

$type->request->get('type');
Run Code Online (Sandbox Code Playgroud)

我不确定它是否真的有效.从这个链接链接

接下来在平面PHP中我生成一个XML响应

  header("Content-type: text/xml");
            echo "<?xml version=\"1.0\" ?>\n";
            echo "<Loadinglist>\n";
            echo "</Loadinglist>";
Run Code Online (Sandbox Code Playgroud)

它给了我一个我在function load_data2(xmlindata)方法中提取的回复.

现在我无法在Symfony2中进行任何有效的XML响应.我尝试了一些技巧,但没有一个在起作用.我想从Controller发送XML响应,捕获它并使用该load_data2方法提取.如果你有时间,请提供一个wiki类型的答案,说明xml响应的工作方式.

(注意,在平板php中,我可以在控制台或firebug中检查XML响应,我是否可以在Symfony2中查看相同内容)

Wou*_*r J 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');
    }
}
Run Code Online (Sandbox Code Playgroud)