douduan2272 2016-02-08 16:19
浏览 36
已采纳

symfony2 ajax调用始终返回null数据

I am using Symfony 2.7 and I query the information from the database and show it on the page however i want to get the current values via api connection through Ajax call by clicking the button but I always get the null response from Ajax Controller.

<div>
    <p id="product">1K0615301M1</p>
    <p id="product">1K0615301M2</p>   
    <input type="button" id="submit" value="Check"/>
</div>

<script>
     $(document).ready(function(){
         $('#submit').click(function(event) {
             var productNr = [];
             $('#product').each(function() {
                 productNr.push($(this).html());
             });
             console.log(ProductNr); // value of ProductNr
             var ajaxRequest;
             event.preventDefault();

             ajaxRequest = $.ajax({
                 url: " {{ path('frontend_api_product') }}",
                 type: "post",
                 processData: false,
                 contentType: 'application/json; charset=UTF-8',
                 data: ProductNr,
                 success: function (data) {
                     console.log(data);
                 }
             });
         });
     });
 </script>

My Controller:

public function AjaxAction(Request $request)
{
    $sparepart = $request->request->get('data');

    if ($request->isXMLHttpRequest()) {
        return new JsonResponse(array(
            'sucess'=> true,
            'data' => $sparepart
        ));
    }
    return new Response('This is not ajax!', 400);
}

Console.log

 Object { sucess: true, data: null }
  • 写回答

2条回答 默认 最新

  • doubang9906 2016-02-08 16:53
    关注

    Because your data object has no data key, you cannot retrieve it by doing $request->request->get('data');

    To get the whole object, use $data = $request->request->all();

    There is many errors in your code.
    You are pushing values in productNr instead of ProductNr.
    You have many elements with the same id (An id is uniq, you have to use classes).

    EDIT

    The problem is coming the format of the data your are sending. To send an object like {"data":["1K0615301M1","1K0615301M2"]} , use:

    var ProductNr = { data: [] };
    var ajaxRequest;
    
    $('.product').each(function() {
        var product = $(this).text();
        ProductNr.data.push(product);
    });
    ajaxRequest = $.ajax({
        url: "/ajax",
        type: "POST",
        data: JSON.stringify(ProductNr),
        processData: false,
        success: function (data) {
            console.log(data);
        }
    });
    

    Use JSON.stringify to serialise data before send it.
    See How do I POST an array of objects with $.ajax (jQuery or Zepto)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 逆置单链表输出不完整
  • ¥15 宇视vms-B200-A16@R启动不了,如下图所示,在软件工具搜不到,如何解决?(操作系统-linux)
  • ¥500 寻找一名电子工程师完成pcb主板设计(拒绝AI生成式答案)
  • ¥15 关于#mysql#的问题:UNION ALL(相关搜索:sql语句)
  • ¥15 matlab二位可视化能否针对不同数值范围分开分级?
  • ¥15 已经创建了模拟器但是不能用来运行app 怎么办😭自己搞两天了
  • ¥15 关于#极限编程#的问题,请各位专家解答!
  • ¥20 win11账户锁定时间设为0无法登录
  • ¥45 C#学生成绩管理系统
  • ¥30 matlab appdesigner私有函数嵌套整合