【问题标题】:How can I pass a jquery value from a selected dropdown list to a variable in Laravel 5.1?如何将选定下拉列表中的 jquery 值传递给 Laravel 5.1 中的变量?
【发布时间】:2016-02-02 09:07:54
【问题描述】:

我已经像这样在控制器类中为 (price) 创建了字段。

   protected $fields = [
        'tag' => '',
        'title' => '',
        'location' => '',
        'property_type' => '',
        'residence_name' => '',
        'bedroom_no' => '',
        'price' => '',
        'lease' => 0,
    ];

我还在我的表中创建了一个列(价格)以进行迁移。

Schema::table('tags', function (Blueprint $table) {

    $table->string('location');
    $table->string('property_type');
    $table->string('residence_name');
    $table->string('bedroom_no');
    $table->string('price');
    $table->boolean('lease');

});

其他字段保存在数据库中,因为它们是文本输入字段。 这是保存在数据库中的位置输入字段的工作示例代码:

<div class="form-group">
  <label for="location" class="col-md-3 control-label">
  Location / City
  </label>
   <div class="col-md-8">
     <input type="text" class="form-control" name="location" placeholder=""
       id="location" value="{{ $location }}">
 </div>
</div>

这是价格下拉列表的代码,我想从 jQuery 中获取 var price 的值,然后将其传递给 Laravel 中的 $price var:

 <div class="form-group">
  <label for="price" class="col-md-3 control-label">
   Price
  </label>
  <div class="col-md-4">
   <select class="form-control" id="price" value="{{ $price }}">
    <option>10,000 - 15,000</option>
    <option>15,000 - 20,000</option>
    <option>20,000 - 25,000</option>
    <option>30,000 - 50,000</option>
    <option>50,000 and Above</option>
   </select>
  </div>
 </div>

使用 jQuery 脚本代码来接受用户的输入

<script>
$("#price").change(function () {
   var price = $(this).val();
   alert(price);
});
</script>

【问题讨论】:

  • 你听说过表单吗?
  • 我目前正在使用表单。我从输入类型文本中得到了一些值。但是从选择下拉列表中获取价值是我的问题。

标签: javascript php jquery mysql laravel-5.1


【解决方案1】:

试试这个

<div class="form-group">
<label for="price" class="col-md-3 control-label">
   Price
  </label>
  <div class="col-md-4">
   <select class="form-control" id="price">
    <option value="10,000 - 15,000">10,000 - 15,000</option>
    <option value="15,000 - 20,000">15,000 - 20,000</option>
    <option value="20,000 - 25,000">20,000 - 25,000</option>
    <option value="30,000 - 50,000">30,000 - 50,000</option>
    <option value="50,000 and Above">50,000 and Above</option>
   </select>
  </div>
 </div>

在 jquery 中

$("#price").on("change", function () {
    var price = $(this).val(); 
    alert(price);
    //Here you can use ajax to call php function
    $.ajax({
        url : <your_function_path>,
        type : 'POST',
        data : {
            price : price
        },
        success : function(ret_data) {
        }
    });
});

然后在你的 php 函数中通过 Request 对象使用“input”或“get”函数获取值

例如。假设你有一个叫做 ABC 的类和一个叫做 PQR 的函数

class ABC extends Controller {
    public function PQR(Request $request) {
        $price = $request->get('price');
        ...
    }
}

【讨论】:

  • 这不会将任何值传递给 php。您只复制了我发布的代码,然后将其粘贴回来。我需要将 jquery 代码中的价格值传递给 php,以便将其保存在数据库中。这是一个适用于文本输入的示例。
【解决方案2】:

name 属性price 添加到您的&lt;select&gt; 标记和每个&lt;option&gt; 标记属性value 与您想要的值。

<select class="form-control" id="price" name="price">
    <option value="10,000 - 15,000">10,000 - 15,000</option>
    <option value="15,000 - 20,000">15,000 - 20,000</option>
    <option value="20,000 - 25,000">20,000 - 25,000</option>
    <option value="30,000 - 50,000">30,000 - 50,000</option>
    <option value="50,000 and Above">50,000 and Above</option>
</select>

您不需要其他任何东西。这就是 HTML 表单的工作原理。

该值附加到名称中,您稍后可以通过以下方式获取它:

$request-&gt;input('price'); 传递给 $request-&gt;input 的参数是表单中 input/select/checkbox/radio 元素的名称参数,它将与选择的 value 相同。

删除 javascript,因为您的情况不需要它。

【讨论】:

    【解决方案3】:

    您提到您可以将文本输入字段保存在数据库中,所以我想您知道如何在 HTML 中进行表单提交,在 Laravel 中设置发布路由,在控制器中捕获输入,然后保存到您的型号。

    如果是这样,唯一的问题是选择下拉菜单,那么您似乎忘记了选择标签上的名称属性和选项标签上的值属性。

    如果你想在下拉列表中设置一个默认值,就像我猜你试图使用value={{ $price }} 一样,那么你应该使用selected 属性。

    <select class="form-control" id="price" name="price">
        <option value='10,000 - 15,000'>10,000 - 15,000</option>
        <option value='15,000 - 20,000'>15,000 - 20,000</option>
        <option value='20,000 - 25,000' selected='selected'>20,000 - 25,000</option>
        <option value='30,000 - 50,000'>30,000 - 50,000</option>
        <option value='50,000+'>50,000 and Above</option>
    </select>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 2014-09-22
      相关资源
      最近更新 更多