簡體   English   中英

Ajax加載的表單發送空的獲取請求

[英]Ajax loaded form sends empty get request

我正在使用laravel,使用ajax使用表格加載表格問題是當我發送GET到/ remove時,請求為空

   http://localhost:3000/remove? 

如果我不要求renderTable()而只包含表視圖請求,則執行正常

http://localhost:3000/remove?iddel=98

所以問題是為什么Ajax加載的表單無法發送正確的請求

js用於表加載

function renderTable() {
  var $request = $.get('/table'); // make request
  var $container = $('.table-row');

  $container.addClass('loading'); // add loading class (optional)

  $request.done(function(data) { // success
    $container.html(data.html);
  });
  $request.always(function() {
    $container.removeClass('loading');
  });
}
renderTable();

路線

 Route::get('table', 'HomeController@table');
 Route::get('remove', "RemoveEntryController@store");

RemoveEntryController

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class RemoveEntryController extends Controller
{
 public function store(Request $request){
    $r_id = $request->input('iddel');
    DB::table('users')->where('id', '=', $r_id)->delete();
 }
}

表格視圖

<span class="overlay"><span class="loader-img"></span></span>
<table class="table table-striped table-dark">
  <thead>
    <tr>
      <th scope="col" width="5%">#</th>
      <th scope="col" width="25%">First</th>
      <th scope="col" width="25%">Last</th>
      <th scope="col" width="25%">Handle</th>
      <th scope="col" width="20%">Action</th>
    </tr>
  </thead>
  <tbody>
    @foreach ($users as $user)
    <form action="/remove" method="GET" id="rem_form_{{ $loop->index }}">
        <input type="hidden" value="{{ $user->id }}" name="iddel">
        <tr>
            <th scope="row">{{ $user->id }}</th>
            <td>{{ $user->name }}</td>
            <td>{{ $user->last_name }}</td>
            <td>{{ $user->login }}</td>
            <td>
                <div class="container">
                    <div class="row">
                        <button type="button" class="btn btn-info col-6">Edit</button>
                        <button type="submit" class="btn btn-danger col-4 offset-2" form="rem_form_{{ $loop->index }}">X</button>
                    </div>
                </div>
            </td>
        </tr>
    </form>
    @endforeach

  </tbody>
</table>

主頁

<!doctype html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="csrf-token" content="{{ csrf_token() }}">
        <link rel="stylesheet" href="css/app.css">
        <title>Laravel</title>

        <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css"> 
    </head>
    <body>
        <section class="main-container">
            <div class="container logo-container">
                <div class="row">
                    <div class="logo"></div>
                </div>
            </div>
        <div class="container form-container">
            <div class="row form-row">
                <form action="/add" method="POST" id="add_form" class="add-input">
                    <div class="container">
                        <div class="row">
                    <div class="col-4">
                        <input type="text" class="form-control" placeholder="First name" name="name">
                    </div>
                    <div class="col-3">
                        <input type="text" class="form-control" placeholder="Last name" name="last_name">
                    </div>
                    <div class="col-3">
                        <input type="text" class="form-control" placeholder="login" name="login">
                    </div>
                    <button type="submit" form="add_form" class="btn btn-success col-2">ADD</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>
        <div class="container">
            <div class="row table-row loadingg">
               @include('table')
            </div>
        </div>
        </section>
        <script src="js/app.js"></script>
    </body>
</html>

答案可能真的很差,但這是我可以使之起作用的唯一方法
我在表格下方的主頁底部放置了一個隱藏表格

<div class="container">
        <div class="row table-row loadingg">
           @include('table')
        </div>
        <form action="/remove" id="hidden" name="real_rem">
            <input type="hidden" value="" name="iddel" id="real_input">
        </form>
    </div>

將加載表中的按鈕類型從提交更改為按鈕
並使點擊監聽器看起來像這樣

  jQuery(document).on('click', ".btn-danger",function(e){
     //e.preventDefault();
    //e.stopImmediatePropagation();
    var fakeForm = jQuery('#'+jQuery(this).attr('form'))
    var realForm = jQuery('#hidden');
    var realInput = jQuery('#real_input');
    var fakeInput = jQuery('#fake_input');
    realInput.attr('value',fakeInput.attr('value'));
    console.log(realInput.attr('value'));

   jQuery.ajax({
        type     : "GET",
        cache    : false,
        url      : fakeForm.attr('action'),
        data     : realForm.serialize(),
        success  : function(data) {
            jQuery('html').trigger( "form:removed" );
        }
    });
});

所以基本上我是從ajax加載的輸入中獲取價值並將其插入到通常加載的輸入中並提交
我敢肯定,有更好的方法可以做到這一點,如果您在這里分享,我將不勝感激

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM