2017-07-28 34 views
0

我想用ajax做一些事情,但它不起作用。用ajax提交表單而不進行重定向

我有一些視圖,其中我將成爲頁面的所有功能。

視圖的代碼是這樣的:

@extends('cms.public.layouts.default') 
@section('content') 

<div class="col-md-10"> 
    <h3 style="letter-spacing:40px;text-align:center;color:f15d5e;">PROYECTOS</h3> 
</div> 

<div id="listall"> <!-- DIV TO LIST ALL THE PROJECTS START HERE --> 
     <div class="col-md-2" style="padding:20px;"> 
      <button type="button" id="buttoncreate" class="btn btn-danger">Crear Proyecto</button> 

     </div> 
         <table class="table"> 
        <thead style="color:white"> 
        <tr> 
         <th>Id</th> 
         <th>Slug</th> 
         <th>Order</th> 
         <th>Public</th> 
         <th>Path header</th> 
         <th>Path home</th> 
         <th>Fecha creación</th> 
         <th>Fecha ultima actualización</th> 
         <th><span class="glyphicon glyphicon-cog"></span></th> 
        </tr> 
        </thead> 
        <tbody style="color:white"> 
        @foreach ($projects as $key => $project) 
        <tr> 
         <th>{{$project->id}}</th> 
         <td>{{$project->slug}}</td> 
         <td>{{$project->order}}</td> 
         <td>{{$project->public}}</td> 
         <td>{{$project->pathheader}}</td> 
         <td>{{$project->pathhome}}</td> 
         <td>{{ date('M j, Y', strtotime($project->created_at))}}</td> 
         <td>{{ date('M j, Y', strtotime($project->updated_at))}}</td> 
         <td><a href="{{ route('admin.projects.show', $project->id)}}" class="btn btn-info btn-sm">View</a> <a href="{{ route('admin.project.edit', $project->id)}}" class="btn btn-success btn-sm">Edit</a> 
        @endforeach 
        </tr> 
        </tbody> 
       </table> 
    <br><br> 
</div> <!-- DIV TO LIST ALL THE PROJECTS END HERE --> 

<div id="form1" style="display:none;" class="col-md-8"> <!-- DIV TO SHOW THE CREATE PROJECT FORM 1 START HERE--> 
    <div> 
    <h3>Crear nuevo proyecto</h3> 
    </div> 



    <div id="formcreateproject"> 

     <form method="POST" action="{{ route('admin.projects.store') }}" enctype="multipart/form-data" id="myForm" name="myForm"> 
      <div class="form-group"> 
      <label name="title">Slug:</label> 
      <input type="text" id="slug" name="slug" placeholder="ejemplo-de-slug" class="form-control form-control-sm"> 
      <label name="order">Order:</label> 
      <input type="number" id="order" name="order" class="form-control form-control-sm"> 
      <label name="public">Public:</label> 
      <input type="number" id="public" name="public" class="form-control form-control-sm"> 
      <label name="body">Header</label> 
      <input type="file" name="pathheader" id="pathheader" class="form-control-file" aria-describedby="fileHelp"><br> 
      <label name="body">Home</label> 
      <input type="file" name="pathhome" id="pathhome" class="form-control-file" aria-describedby="fileHelp"><br> 

      <input type="submit" value="Crear Proyecto" id="createprojectsubmit" class="btn btn-danger btn-md"> 
      <input type="hidden" name="_token" value="{{ Session::token() }}"> 
      <br><br><br> 

      </div> 
     </form> 

     </div> 
</div> <!-- DIV TO SHOW THE CREATE PROJECT FORM 1 END HERE--> 

<div id="form2" style="display:none;" class="col-md-6"> 
<div class="col-md-"> 
    <h3>Crear nuevo proyecto</h3> 
    </div> 
     <form method="POST" action="{{ route('admin.projects.store') }}" enctype="multipart/form-data"> 
      <div class="form-group"> 
      <label name="title">Slug:</label> 
      <input type="text" id="slug" name="slug" placeholder="ejemplo-de-slug" class="form-control form-control-sm"> 
      <label name="order">Order:</label> 
      <input type="number" id="order" name="order" class="form-control form-control-sm"> 
      <label name="public">Public:</label> 
      <input type="number" id="public" name="public" class="form-control form-control-sm"> 
      <label name="body">Header</label> 
      <input type="file" name="pathheader" id="pathheader" class="form-control-file" aria-describedby="fileHelp"><br> 
      <label name="body">Home</label> 
      <input type="file" name="pathhome" id="pathhome" class="form-control-file" aria-describedby="fileHelp"><br> 

      <input type="submit" value="Crear Proyecto" id="createprojectsubmit" class="btn btn-danger btn-md"> 
      <input type="hidden" name="_token" value="{{ Session::token() }}"> 
      <br><br><br> 

      </div> 
     </form> 
</div> 

</div> 
@stop 

以及JavaScript函數是這樣的:

//Javascript view /projects/menu.blade.php 
$(document).ready(function(){ 
    $("#buttoncreate").click(function(){ 
     $("#listall").hide(); 
     $("#form1").fadeIn(1000); 
     $("#createprojectsubmit").submit(function(e){ 
      e.preventDefault(); 
      $.ajax({ 
       url:'/admin/projects/postUpload', 
       type:'post', 
       data:$('#myForm'), 
       success: function(){ 
        $("#form1").fadeOut(1000); 
        $("#form2").fadeIn(1000); 
       } 
      }); 
     }); 
     }); 
}); 

隱藏第一個div和第二工程褪色,並提交和創建的功能新項目。但網址更改並顯示一個白頁。

我要做的第一件事就是淡出form1,淡入淡出第二種形式。這將是偉大的,如果當淡出form1,在她的空間出現勾選/檢查。

非常感謝,任何幫助將不勝感激。

+0

這是因爲你調用'submit'函數時,只會使'submit'事件上的綁定不執行任何事...... –

+0

那麼在使用提交函數時,只會提交'submit'?如果你把更多的東西不會被執行? @ ADreNaLiNe-DJ無論如何,如果我改變點擊不起作用。 –

+0

看到我的答案; o) –

回答

0

你打電話給submit事件按鈕不屬於按鈕。它屬於形式。所以調用click事件上的按鈕,然後使用preventDefault()停止的形式提交的

$("#createprojectsubmit").submit(function(e){ 
    e.preventDefault(); 
    //your further code goes here 
} 

使用這樣

$("#createprojectsubmit").click(function(e){ 
    e.preventDefault(); 
    //your further code goes here 
} 

您也可以觸發對submit事件您form作爲

$("#myForm").submit(function(e){ 
    e.preventDefault(); 
    //your further code goes here 
} 
+0

嗨@RAUSHANKUMAR不工作你的代碼。表單不要提交:l –

+0

你有兩個表單,每個表單你有相同的id提交按鈕,給他們和你的表單提供唯一的id,然後嘗試 –

+0

我知道隊友,它只是硬編碼這就是爲什麼有相同的ID等無論如何,第一種形式是我會嘗試提交和不工作。 –

0

這是因爲你正在混合2種方式來處理表單的提交:點擊對接和表單提交本身。

您在腳本中調用的功能submit正在點擊按鈕時綁定submit事件。

這裏是如何將代碼綁定只在submit事件您form的:

$(document).ready(function(){ 
    $("#buttoncreate").click(function(){ 
     $("#listall").hide(); 
     $("#form1").fadeIn(1000); 
     $("#myForm").submit(); 
    }); 

    $("#myForm").submit(function(e){ 
     e.preventDefault(); 
     $.ajax({ 
      url:'/admin/projects/postUpload', 
      type:'post', 
      data:$('#myForm'), 
      success: function(){ 
       $("#form1").fadeOut(1000); 
       $("#form2").fadeIn(1000); 
      } 
     }); 
    }); 
}); 

編輯:編輯答案賬戶採取按鈕的點擊。

首先,我們綁定button上的click事件來處理animations,並通過在表單上調用submit函數來觸發表單提交。

然後,我們綁定submit事件的form來處理更換classic postback表單提交的ajax調用。

+0

感謝評論@ ADreNaLiNe-DJ我正​​試圖理解你想做什麼。當點擊id = buttoncreate按鈕時,代碼如何淡出div listall?在你的代碼中你有$(「#myForm」),但這只是表單方法的id,而不是按鈕。無論如何,現在,表單不起作用。 –

+0

對不起,我誤解了一些東西。我已經更新了答案。 –

+0

嗯..我想我明白了,它給了我一個'錯誤',這個:TokenMismatchException也許我們忘記了一些關於令牌的東西。知道什麼? @ ADreNaLiNe-DJ非常感謝! –