【问题标题】:database connectivity not working in ajax call- laravel数据库连接在 ajax call-laravel 中不起作用
【发布时间】:2014-12-27 12:13:53
【问题描述】:

我的 javascript 是:

$( "#exerciseFetch" ).change(function( event ) {   //alert("super");
    // var _token = $( this ).find( 'input[name=_token]' ).val()

    var mytoken = $('#mytoken').attr('value');
    ajaxContent = [  
        {"_token": mytoken},
        {"val"  : $( "#exerciseFetch" ).val()}                            
    ]
    $.ajax({
        type: "POST",
        url: 'exerciseFetchAjaxCall', 
        data: { ajaxContent }
        // data: { "_token": mytoken }
    }).done(function( msg ) {
        alert( msg );
        var reqContent = msg;
        $("#dynamic").html(reqContent);
    });
});

我的路线:

Route::group(array('prefix' => 'admin', 'namespace' => 'App\Controllers\Admin'), function()
{
    Route::post('exerciseFetchAjaxCall', 'ExerciseController@exerciseAjaxCall');
});

我的控制器代码:

public function exerciseAjaxCall(){
    $row = $_POST['ajaxContent'];

    // $row[1]['val']

    $muscles = Muscular::whereIn('Status',array(1))->orderBy('id', 'desc')->paginate(10);

    // return    $this->content = View::make('admin.exercise.displayMusclarGroupAjax',array('row' => $row ));
    return $this->content = View::make('admin.exercise.displayMusclarGroupAjax',array('muscles' => $muscles ));
}

我的查看代码:

@if($muscles && count($muscles) > 0)
    @foreach($muscles as $muscular)
    <?php

        $icons = ["fa-icon-user", "fa-icon-user", "fa-icon-user inactive"];    
        $typeArray = [
            '1'=> 'Resistance',
            '2'=> 'Cardio'
        ];
        $typeArray[3] = 'Resistance & Cardio';

    ?>
    <tr>
        <td data-title="muscular_name">{{ ucfirst($muscular->muscular_name) }}</td>
        <td data-title="muscular_type">{{ $typeArray[$muscular->type]}}</td>                        
    </tr>
    <?php
        $i++;
    ?>
    @endforeach
@endif
@if(isset($row) && count($row) > 0)
    <?print_r($row);?>
@endif

如果我注释掉行内容并注释控制器中的肌肉内容,代码将返回传递的值,但如果未注释,则不会显示肌肉的内容。

我在其列表页面中显示了具有相同代码的肌肉内容(但没有 ajax 调用)不知道为什么它不起作用,因为我是 laravel 的新手。

任何建议都会有所帮助...

【问题讨论】:

  • 使用 Chrome 开发工具并发布您遇到的错误/响应
  • @Saqueib 我的 java 脚本没有问题,它可以正常工作,但是 控制器或视图有问题,但它没有显示在 laravel 调试器中 :(

标签: javascript php jquery laravel laravel-4


【解决方案1】:

你在 ajax 脚本中有语法错误,试试这个简单的$.post() api 来进行 ajax 调用

 $( "#exerciseFetch" ).change(function( event ) {   //alert("super");
    // var _token = $( this ).find( 'input[name=_token]' ).val()

    var mytoken = $('#mytoken').attr('value'),
        ajaxContent = {
           "_token" : mytoken,
           "val"  : $( "#exerciseFetch" ).val()
        };

    //make ajax call 
    $.post( "exerciseFetchAjaxCall", ajaxContent ).done(
        function( msg ) {
            alert( msg );
            var reqContent = msg;
            $("#dynamic").html(reqContent);
        }
    );
});

以上应该可以,如果数据库没有返回,请在控制器中尝试dd() 以查看返回的结果

//are you sure `Status` is not in small case 
$muscles = Muscular::whereIn('Status',array(1))->orderBy('id', 'desc')->paginate(10);

dd($muscles);

【讨论】:

  • JavaScript 中的分号不是必需的,也不是语法错误。
  • 它说SyntaxError: invalid object initializer 因为这个data: { ajaxContent }
  • 这让我们回到开始:他们代码的哪个特定部分导致了语法错误?我不明白如何说“你有一个语法错误,试试这个完全改变的代码。”有助于他们。解释他们的代码的哪一部分导致了语法错误以及原因,然后解释你做了什么来修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 2013-10-31
  • 2016-01-31
  • 1970-01-01
  • 2018-05-09
相关资源
最近更新 更多