PHP Ajax Laravel问题的原因很清楚,但解决方案


PHP Ajax Laravel Cause of the issue is clear, but the solution?

视图中有一个Ajax代码。它将选定的索引(从选择框中)发送到控制器。控制器将其转发给模型并获得正确的结果。我可以在Firebug中看到,当我执行print_r时,控制器在其数组中有正确的值,因此只需将其发送回视图进行打印。但它在"变量未定义"处就失败了。我可以通过

这样的操作来绕过这个问题

如果(空($变量)){

则不打印,否则打印如果这样做,它确实会到达Ajax代码的Success部分,但我希望它位于View html页面上。我怎样才能成功地完成这最后一部分呢?下面是完整的代码:

视图:

<script>
    $(document).ready(function() {
                $("#target").change(function() {
                    // alert($('#target option:selected').val());
                    $.ajax({
                        type: 'POST',
                        url: '<?php echo route("showhospitals");?>',
                        data: {'dataString': $('#target option:selected').val()},
                        cache: false,
                        success: function(data)
                        {
                           // alert(data);// CAN I USE THIS SUCCESS STUFF TO WRITE 
                           // TO THE HTML BLADE VIE PAGE INSTEAD OF ON AN ALERT?
                        }
                    });
                });

            });
</script>
控制器

public function postespecialidades(){
      if (Request::ajax())
{
   /*WE GET THE DATA FROM THE SELECT LIST VIA AJAX*/
    $data['input'] = Input::get('dataString');
    $dato = $data['input'];
    echo "the index number I got is: . $dato";
    /*WE SEND THAT DATA TO THE MODEL*/
    $hospital['input'] = with(new treatment)->sendData($dato);
    print_r($hospital['input']); //I CAN SEE THE CORRECT RESULT IN FIREBUG RESPONSE BUT CANT PASS IT TO THE VIEW
    return View::make('especialidades.especialidades')->with('hospital', $hospital);
    return $hospital['input'];
}
         else{
          echo "THE JQUERY IS NOT GETTING TO TALK TO ME";
        }
     }
  }

所以,我想把结果打印在View页面上,而不是在alert窗口上。

人员信息将在这里列出。

问题原因:

当页面加载时,在选择任何内容之前,页面崩溃,因为它试图打印一个没有机会从控制器获得值的变量。这就是问题所在。

使用其中一个。

解决方案1

双引号引用你的PHP路由

< script > $(document).ready(function() {
    $("#target").change(function() {
        // alert($('#target option:selected').val());
        formData = {
            dataString: $('#target option:selected').val();
        }
        $.ajax({
            type: 'POST',
            url: "<?php echo route("showhospitals");?>",
            data: formData,
            cache: false,
            success: function(data) {
                // alert(data);// CAN I USE THIS SUCCESS STUFF TO WRITE 
                // TO THE HTML BLADE VIE PAGE INSTEAD OF ON AN ALERT?
            }
        });
    });
}); < /script>

解决方案2

使用URL代替PHP路由

< script > $(document).ready(function() {
    $("#target").change(function() {
        // alert($('#target option:selected').val());
        formData = {
            dataString: $('#target option:selected').val();
        }
        $.ajax({
            type: 'POST',
            url: 'http://localhost/showhospitals',
            data: formData,
            cache: false,
            success: function(data) {
                // alert(data);// CAN I USE THIS SUCCESS STUFF TO WRITE 
                // TO THE HTML BLADE VIE PAGE INSTEAD OF ON AN ALERT?
            }
        });
    });
}); < /script>