【问题标题】:Laravel: how to send selectedIndex to a controller by AjaxLaravel:如何通过 Ajax 将 selectedIndex 发送到控制器
【发布时间】:2014-03-06 00:38:00
【问题描述】:

想要达到什么目标?

在更改选择列表的选择时,此 selectedIndex 由控制器拾取,将 SQL 查询发送到模型,并通过选择列表下方的 ajax 返回结果。这在普通的php环境下很容易做到,但是在Laravel环境下我就很疑惑了。

如果不清楚:我想要的是:http://www.w3schools.com/php/php_ajax_database.asp 在 Laravel 环境中完成

更新:我已经使用 Itachi 的指示改进了代码:

如果我可以使用简单的 Ajax,但被建议使用 JQUERY/JSON,不知道为什么这不起作用。

<script>        
    function showHint(str)
        {
        if (str.length==0)
          {
          document.getElementById("txtHint").innerHTML="";
          return;
          }
        var xmlhttp=new XMLHttpRequest();
        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
            }
          }
        xmlhttp.open("GET","gethint.php?q="+str,true);
        xmlhttp.send();
        }   

    </script>

然后 PHP 获取东西等,会很容易。

所以,JQUERY/JSON 或多或少会这样,虽然我不知道如何完成它

$('#ajax').submit(function(e){

    $.ajax({
        url: '<?php echo route("hint");?>',
        type: 'POST',
        data: { especialidades: $('especialidades').val() },
        dataType: 'json',
        success: THIS WOULD BE A FUNCTION THAT WOULD PRINT THE RESULTS FROM THE CONTROLLER
         }
    });

    e.preventDefault();
});

我自己的表格是这样的:

<form role="form"  class="bg-success" id="ajax">
  <div class="form-group">
<select name ="especialidades" id = "especialidades" class="form-control" onchange="showHint(this.value)">                 
   <?php foreach($data['kategori'] as $detalle): ?>
   <option value="<?php echo $detalle->id_specialty; ?>"><?php echo $detalle->spec_description; ?></option>  
    <?php endforeach;?>
     </select>
   </div>
   </form>
  <div id="txtHint"><b>Person info will be listed here.</b></div>

控制器应该是这样的:

class Hint extends BaseController{

    public $restful = true;
    public function post_appajax()
    {
         NEED TO GET THE SELECTED INDEX SENT BY THE JQUERY SCRIPT IN THE VIEW: HOW??   

        SOMETHING EQUAL TO THIS ===> ::json(Input::get('especialidades'));

    }
  }

路线文件是这样的:(由 Itachi 提供)

Route::post('hint', array(
    'as'    =>    'hint',
    'uses'  =>    'Hint@getHint'
));

【问题讨论】:

  • 你能改写你的问题吗?我不明白问题出在哪里。
  • 我得到了你想要的。我问你有什么问题? 你不能做什么?
  • 1) 使用 Jquery。 2) 有 LOTS 的不同方法可以做到这一点。取决于您如何映射路线。 (简单来说就是显示路由文件)
  • 你想让这个控制器安静吗?你在这里混淆了很多代码。
  • 我真的不介意restful与否,我认为这意味着你可以看到你的方法使用了什么http动词,但无论如何。是的,这有点乱,我正在学习如何在控制器中的 laravel 中编写一个 URL,但是......

标签: php ajax laravel laravel-3


【解决方案1】:

其实很简单。

Routes.php

Route::post('hint', array(
    'as'    =>    'hint',
    'uses'  =>    'HintController@getHint'
));

HintController.php

class HintController extends BaseController {

    public function getHint()
    {
          return Response::json(//whatever you want);
    }
}

查看

$.ajax({
    url: '<?php echo route("hint");?>', //<-------- see this
    type: 'POST',
    data: { especialidades: $('especialidades').val() },
    dataType: 'json',
    success: SEND IT TO THE CONTROLER HOWEVER YOU CAN...
     }
});

休息由你决定。

【讨论】:

  • 非常感谢您的帮助和时间。在控制器处,返回 Response::json,我想要的是它将 selectedIndex 发送到模型我不明白如果我没有看到实际收到它的代码,它如何返回一些东西,并且在视图中,当你标记“看到这个”,是到控制器的正确路线吗,就像那样?回声路线?以及 Jquery 的“成功”,我不知道如何从那里获得它:/
  • 1.如果我需要编写所有步骤,这将是一个很大的教程。更好的是,尝试了解 laravel 的工作原理,然后深入了解上述程序。 2. 是的,为 named 路由编写 url 非常容易。 3)你需要解析JSON输出然后输出。不可能全部写在一个答案中。这就是为什么我建议,首先学习基本的东西。然后尝试复杂的问题。
  • 我想说它很有帮助,但我的声誉点不允许我标记它。正如你所提到的,我可能需要 6 个月的时间来学习 JSON,然后是 Laravel,但我只想解决这些问题 在我解决问题之前我不能学习那么多语言,我边做边学,不要有时间去做,不过我很感激。
  • JSON, laravel routing, laravel controller, laravel response 你去吧。只有4页。最多 1 小时。
  • 我很久以前就访问过所有这些页面,否则我将无法在这篇文章中写一行。如果我之前没有读过那么远,你认为我怎么会产生具体的怀疑,但我的问题远比那些基本的东西复杂得多。我已经知道基本的东西,我已经从数据库等中填充了选择列表,但是这些东西是不同的,我仍然不知道为什么 Ajax sn-p 不适用等等。再次,我继续感激,因为你是唯一的一个要回答,似乎没有其他人知道如何回答。
【解决方案2】:

根据控制器中的方法名称,路由应该是 (Laravel-3:RESTfull controller)

Route::post('hint', array( 'as' => 'hint', 'uses' => 'Hint@appajax'));

你的控制器

class Hint extends BaseController{

    public $restful = true;

    public function post_appajax()
    {
        // ...
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    相关资源
    最近更新 更多