【问题标题】:JSON Response from laravel来自 laravel 的 JSON 响应
【发布时间】:2017-09-24 01:48:43
【问题描述】:

试图找出我在实施中做错了什么。


[编辑] - 因为我不清楚。我想让模态响应联系表单的成功执行。我希望模态显示给用户一个 Okay 按钮(我可以稍后编写代码)。

路线

Route::get('contact', 'PagesController@getContact');
Route::post('contact', 'PagesController@postContact');

查看

{{ Form::open(array('id' => 'form-contact', 'data-parsley-validate' => '')) }}
...
form inputs
...
{{ Form::close() }}

<div id="flash-overlay-modal" class="modal fade hide {{ $modalClass or '' }}">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>

                <h4 class="modal-title">{{ $title }}</h4>
            </div>

            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>

控制器

public function postContact(Request $request)
{
... Some logic
Mail::to($data['email'])->queue(new ContactForm($data));
              Redis::incr('send.contact');

              //Redirect to contact page
              // return redirect()->back()->with('success', true)->with('message','Your message was successfully sent. Ill be in touch soon');
              $msg = array(
                  'status' => 'success',
                  'msg' => 'Message sent successfully',
              );
              // return response()->json($msg); 
              return Response::json(array('success' => true, 'payload' => View::make('pages.contact', $msg)));

JS

    $(document).ready(function() {
    $('#form-contact').on(submit, function(e) {
        e.preventDefault();
        var formEl = $(this);
        var name = $('#name').val();
        var company = $('#company').val();
        var email = $('#email').val();
        var subject = $('#subject').val();
        var message = $('#message').val();
        var datastring = {
            name: name,
            company: company,
            email: email,
            subject: subject,
            message: message
        };
        $.ajax({
            type: "POST",
            url: './contact',
            data: dataString,
            accept: {
                javascript: 'application/javascript'
            },
            dataType: "JSON",
            success: function(data) {
                if (data.success) {
                    console.log(data);
                    // notice that we are expecting a json array with success = true and a payload
                    $('#masterModal').empty().append(data.payload).modal('show');
                } else {
                    // for debugging    
                    alert(data);
                }
            },
            error: function(jqXHR, textStatus, errorThrown) { // What to do if we fail
                console.log(JSON.stringify(jqXHR));
                console.log("AJAX error: " + textStatus + ' : ' + errorThrown + ' : ' + errorThrown);
            }
        });
    });
});

响应

{
"success": true,
"payload": {}
}

我收到来自控制器的 JSON 响应,但它没有按预期激活模式。我搜索了几个地方寻求帮助,但找不到任何帮助。任何帮助或正确方向的观点将不胜感激。

谢谢!

【问题讨论】:

  • 在您的ajax url 字段中删除点并重试
  • 你在使用引导程序吗?
  • @ViniciusLuiz - 是的,我正在使用引导程序...

标签: json laravel response


【解决方案1】:

在你的控制器的响应中试试这个,而不是你目前对payload的响应:

'payload' => View::make('pages.contact', $msg)->render()

在这里找到 (https://laravel.io/forum/08-23-2014-return-view-in-json)

【讨论】:

  • 现在试试这个。
  • 我试过这个,但它以 json 格式返回整个页面。任何想法下一步是什么? @hollings
  • 如果您尝试将data.payload 附加到模态,我建议将您的模态内容放到它自己的视图中,然后在您的有效负载中返回该视图。
  • 我这样做了:return Response::json(array('success' => true, 'payload' => View::make('partials._modal', $data)->render( )));它返回了另一个 JSON。
  • 刚刚看到你最近的编辑:你有.modal(),它只初始化模式。 .modal('show') 将初始化显示模态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 2017-12-01
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 2015-11-24
相关资源
最近更新 更多