【问题标题】:Not working : Send POST Data with Ajax to a Symfony2 Controller不工作:使用 Ajax 将 POST 数据发送到 Symfony2 控制器
【发布时间】:2016-01-07 07:00:25
【问题描述】:

我想将发布数据发送到 Symfony 控制器,但它不起作用。当我使用 AJAX 发送数据时,它正在发送 POST 数据,但在控制台中显示红色链接,没有错误消息或状态;但净FF为200ok。它正在通过普通表单成功发送请求。

这是我的 Javascript 代码:

function addprivate() {
    var form_data = $('#private_tuition').serialize();
    var getTeamsUrl = Routing.generate('addprivatetuition', {
        id: form_data
    });
    $.ajax({
        type: "post",
        url: getTeamsUrl,
        data: form_data,
        success: function(response) {
            if (response) {

            } else {

            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            $.notify('Error : Record not found !!', {
                "status": "danger",
                "pos": "top-center"
            });
        }
    });
}

下面是form标签和js函数:

<form method="post" role="form" id='private_tuition' action="{{base_url}}/privatetutionpdf/" >
    <button type="submit" class='btn btn-primary' onclick='addprivate()' name="btn-save">
        <strong>Generate PDF for client</strong>
    </button>

这是接收数据的 PHP Symfony 控制器方法:

namespace Suntec\Marcus\AssignmentBundle\Controller;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\SecurityContextInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

class DefaultController extends Controller
{
....
    /*****************************************************************/
    /**
    * @Route("/addprivatetuition", name="addprivatetuition", options={"expose"=true})
    * @Template()
    */
    public function addprivatetuitionAction(){

        return array();
        //return array();
    }
...

}

【问题讨论】:

  • 在 Firefox 开发者窗口的网络中相当空白。
  • 你能在你的ajax请求之前把你的var“getTeamsUrl”的值发给我吗?
  • Routing.generate 采用路由名称,在您的情况下 addprivatetuition 不是路由名称

标签: javascript php jquery ajax symfony


【解决方案1】:

看起来您必须阻止表单的默认操作,因为当您单击提交按钮时,将提交 html 表单。

只通过javascript提交做某事。喜欢:

$('#private_tuition').submit(function(e){ 
   e.preventDefault();    
}

$('#private_tuition').submit(function(){ 
    return false;    
}

【讨论】:

    猜你喜欢
    • 2016-06-30
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多