如何使用AJAX POST到Slim框架?

时间:2016-11-21 06:56:53

标签: php jquery ajax slim

我正在使用简洁的框架与雄辩与数据库交谈。我正在尝试制作一个简单的发布ajax请求,将数据发布到db。 所以我有这条路线:

//post yell
$app->post('/yell', 'UserController:postYell')->setName('yell');

由此控制器解决

public function postYell($request, $response)
{
$yell = Yell::create([
  'body' => $request->getParam('yellBody'),
  'user_id' => $_SESSION['user'],
]);


return $response->withRedirect($_SERVER['HTTP_REFERER']);
}

我试过这样的事情:

$(".postYell").submit(function(){
    $.ajax(
    {
        url: "/yell",
        type: 'POST',
        data: {
            "_method": 'POST',
        },
        success: function ()
        {
            console.log("it Work");
        }
    });

    console.log("It failed");
});

但我不认为这是正确的方法。如果我遗漏了一些显而易见的东西,我仍然很陌生。我找不到一个很好的例子,说明如何使用纤薄的东西,我已经被困在如何做几个小时了,所以如果有人能指出我正确的方向,我会非常感激< / p>

2 个答案:

答案 0 :(得分:5)

public function postYell(Request $request, Response $response) : Response
{
    $yell = Yell::create([
        'body' => $request->getParam('yellBody'),
        'user_id' => $_SESSION['user']
    ]);

    if ($request->getHeader('X-Requested-With') === 'XMLHttpRequest') {
        return $response;
    } else {
        return $response->withRedirect($request->getHeader('Referer'));
    }
}

然后在你的控制器中,当它通过XHR时不要重定向:

X-Requested-With: XMLHttpRequest

然后跟进您的AJAX请求中的配置以发送正确的数据值(jQuery.ajax自动添加$('form.postYell').submit(function (e) { // prevent the page from submitting like normal e.preventDefault(); $.ajax({ url: '/yell', type: 'POST', data: $(this).serialize(), success: function () { console.log('it worked!'); }, error: function () { console.log('it failed!'); } }); }); ,如文档enter image description here在“标题”下

MainView
  ScrollView
    ContentView

答案 1 :(得分:-1)

根据Slim3文档

if ($request->isXhr()) {
        return $response;
    }

一种确定请求是否来自JQuery AJAX调用的好方法

投票