【问题标题】:Ajax call to Controller and XML response Symfony2对控制器的 Ajax 调用和 XML 响应 Symfony2
【发布时间】:2014-01-15 16:11:28
【问题描述】:

我是 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 的控制器中,我使用它来捕获它

$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 响应是如何完成的。

(注意,在 flat php 中我可以在控制台或 firebug 中检查 XML 响应,我能否在 Symfony2 中查看相同的响应)

【问题讨论】:

    标签: php jquery ajax xml symfony


    【解决方案1】:

    要获取 POST 参数,最好是显式的并使用$request-&gt;request-&gt;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');
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多