Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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
Php AJAX中的基本错误消息-Symfony3_Php_Ajax_Symfony - Fatal编程技术网

Php AJAX中的基本错误消息-Symfony3

Php AJAX中的基本错误消息-Symfony3,php,ajax,symfony,Php,Ajax,Symfony,我正在使用Symfony3(Ubuntu 16.04)开发PhpStorm.2016.3.2 我创建了一个功能性的AJAX请求。 我唯一缺少的是错误消息 我有一个TextType.php(表单),我可以在其中编写内容,还有一个按钮,我可以在其中搜索结果,如果它匹配,我的结果就会出现,但如果它是错误的,那么什么也不会发生,我希望在保持在同一页面的同时显示一条消息错误,如“Oops!什么都没有!” 在我看来,这是我的AJAX请求: <script> $(document)

我正在使用Symfony3(Ubuntu 16.04)开发PhpStorm.2016.3.2

我创建了一个功能性的AJAX请求。 我唯一缺少的是错误消息

我有一个TextType.php(表单),我可以在其中编写内容,还有一个按钮,我可以在其中搜索结果,如果它匹配,我的结果就会出现,但如果它是错误的,那么什么也不会发生,我希望在保持在同一页面的同时显示一条消息错误,如“Oops!什么都没有!”

在我看来,这是我的AJAX请求:

<script>
        $(document).ready(function () {
            $('.ajax').on('click', function(e){
                e.preventDefault();
                $.ajax({
                    url:'{{ (path("app_sort_restaurants")) }}',
                    type: "POST",
                    dataType: "json",
                    data: {
                        "city": $('#search_bar_city').val()
                    },
                    success: function (data)
                    {
                        var bloc = $('#ajax-results');
                        bloc.html('');
                        for(var i = 0; i < data.length; i++) {
                            bloc.append('<div><h2>' + data[i]['name'] + '</h2></div>'); 
                        }
                    },
                });
            });
            return false;
        });
    </script>
public function ajaxSortRestaurantAction(Request $request)
{
    $em = $this->getDoctrine()->getManager();
    $restaurants = $em->getRepository('AppBundle:Restaurant')->findBy(array('city' => $request->request->get('city')));


    $formattedData = array();
    foreach ($restaurants as $restaurant) {
        $formattedData[] = array(
            'name' => $restaurant->getName(),
            'city' => $restaurant->getCity(),
        );
    }
    return new JsonResponse($formattedData);
}
我不知道是应该在控制器中还是在AJAX请求中进行这样的循环。 我知道有
错误:function()
丢失,但我不知道该放在哪里才能使它正常工作。我有点迷路了

向您展示正在发生的事情,实际上是这样的

它在这里工作

这里不是

当搜索错误时,我想显示“哎呀!什么都没有!”。不是像示例中那样的空白

如果有人有意见,我们将不胜感激

我知道有一个错误:function()丢失,但我不知道该放在哪里才能使它正常工作

这将与
success
以及传递给
$.ajax()
的其他选项添加在同一级别,这意味着您的代码可能是

$(document).ready(function () {
        $('.ajax').on('click', function(e){
            e.preventDefault();
            $.ajax({
                url:'{{ (path("app_sort_restaurants")) }}',
                type: "POST",
                dataType: "json",
                data: {
                    "city": $('#search_bar_city').val()
                },
                success: function (data)
                {
                    var bloc = $('#ajax-results');
                    bloc.html('');
                    for(var i = 0; i < data.length; i++) {
                        bloc.append('<div><h2>' + data[i]['name'] + '</h2></div>'); 
                    }
                },
                error: function(xhr, status, error) {
                    // Handle error
                }
            });
        });
        return false;
    });
在上述情况下,如果没有要返回的格式化数据,将返回404


完成此操作后,您可以使用Ajax选项
error
中的error函数在希望显示的位置显示错误消息。

谢谢您的回答。但是我仍然不知道如何使用这个错误消息。我做了一些研究,但我不明白如何显示一条简单的错误消息,比如
Oops,这里什么都没有
,所以我应该怎么做?这是一个有点宽泛的问题,你想表明,无论抛出哪个错误,还是只针对特定的错误?你想在哪里展示它?我更新了我的帖子,你可以看到实际的结果和我想要实现的愿望。你可以用与成功函数相同的方法来实现它,在成功函数中,你只需设置
bloc.html('Oops,此处无任何内容')
,而不是迭代数据向
bloc添加内容。这是在我注释的
//处理错误的地方完成的
好的,我会试试,我会让你知道的。
public function ajaxSortRestaurantAction(Request $request)
{
    $em = $this->getDoctrine()->getManager();
    $restaurants = $em->getRepository('AppBundle:Restaurant')->findBy(array('city' => $request->request->get('city')));


    $formattedData = array();
    foreach ($restaurants as $restaurant) {
        $formattedData[] = array(
            'name' => $restaurant->getName(),
            'city' => $restaurant->getCity(),
        );
    }

    if (0 === count($formattedData)) {
        return new Response("", 404);
    }

    return new JsonResponse($formattedData);
}