Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 控制器需要一个参数值-内部服务器错误500_Javascript_Jquery_Ajax_Forms_Symfony - Fatal编程技术网

Javascript 控制器需要一个参数值-内部服务器错误500

Javascript 控制器需要一个参数值-内部服务器错误500,javascript,jquery,ajax,forms,symfony,Javascript,Jquery,Ajax,Forms,Symfony,用Symfony2实现AJAX是否像我现在看到的那样困难 我的目标是实现一个单页应用程序,它显示一个用于创建帖子的表单(每个帖子都有一个帖子标题和帖子内容)。提交表单时,AJAX负责在div#输出中显示表单下方的帖子 我的模板看起来像: {% extends '::base.html.twig' %} {% block body %} <form action="{{ path('post_creates', { 'id': entity.id }) }}" id="form_

用Symfony2实现AJAX是否像我现在看到的那样困难

我的目标是实现一个单页应用程序,它显示一个用于创建帖子的表单(每个帖子都有一个帖子标题和帖子内容)。提交表单时,AJAX负责在div#输出中显示表单下方的帖子

我的模板看起来像:

{% extends '::base.html.twig' %}

{% block body %}

    <form action="{{ path('post_creates', { 'id': entity.id }) }}" id="form_ajax" method="post" {{ form_enctype(form) }}>
        {{ form_widget(form) }}
        <p>
           <input type="submit" value="create" />
        </p>
    </form>

        <ul class="record_actions">
    <li>
        <a href="{{ path('post') }}">
            Back to the list
        </a>
    </li>
</ul>

<div id="output"></div>

{% endblock %}

{% block javascripts %}

    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <script src="http://jwpsrv.com/library/leLjogZ6EeOBvCIACusDuQ.js"></script>
    <script src="{{ asset('bundles/testblog/js/test2.js') }}"></script>

    <script>

$("#form_ajax").submit(function(){ 


    tinyMCE.get("test_bundle_blogbundle_posttype_postContent").save();

    var content= $("#test_bundle_blogbundle_posttype_postContent").val();

    var title  = $("#test_bundle_blogbundle_posttype_postTitle").val();

    $.ajax({
        type: "POST",
        url: "{{ path('post_creates', { 'id': entity.id }) }}",
        data: {datas:title, date:content},
        cache: false,
        success: function(data){

           $('#output').html(data);

        }
    });    
    return false;
});
</script>
{% endblock %}
我对以下问题有一个疑问:

Controller requires that you provide a value for the "$id" argument (because there is no default value or because there is a non optional argument after this one).

当我将$id转储到控制器中时,我总是使用null。如果我在函数参数中向控制器传递一个值,则控制器工作正常。我在Symfony2方面的知识不允许我找到我缺少的东西。非常感谢您的帮助。

答案在返回的错误消息中

您通过Ajax调用的url不包含
$id
的任何值

根据您的操作定义,
$id
是必需的。你必须确保它总是被提供的

更新:

当您第一次运行显示
模板的
操作
时(可能是同一操作或另一操作),它提供了无效的
实体
(不包含任何
id
)。因此,当它构建您在
ajax调用中使用的
url
时,它调用一个不包含任何
id
的url

按OP编辑:


只有将数据持久化到数据库中,才能定义
$entity
的参数
$id
。因此,将其从控制器的参数中删除,并通过删除呈现HTML中的
实体.id

将其从模板中删除,在ajax调用中
url:
后的值是多少?@cheesemacfly,感谢您的反馈。值为/site/web/app_dev.php/post/creates。即使在控制器参数函数中将值传递给$id时,我也看不到id。如果在细枝模板中转储实体会怎么样:
{{dump(entity)}
。它有id吗?我的意思是,您应该首先查看呈现视图的控制器(包含ajax调用的控制器),因为它缺少实体。下面的答案已经包含解决方案,您的问题已经解决。这才是最重要的:)我相信你指出的问题是正确的,但我真的不能百分之百地理解你。感谢您抽出时间确保$entity变量有一个id。将它转储到控制器或细枝模板中。我认为$entity有变量$id,因为当我在控制器参数中向$id传递随机值时,它工作正常。(
公共函数createsAction(Request$Request,$id=55)
),我明白了。控制器负责构建具有随机保护id的实体,在触发控制器之前,我在模板entity.id中声明,该模板尚未定义。在执行我的操作之前,我需要找到一种方法来定义我的id。我认为ThanksIt被其他审阅者拒绝了。等等,我想把它添加到答案中。
Controller requires that you provide a value for the "$id" argument (because there is no default value or because there is a non optional argument after this one).