2017-09-07 1 views
0

Zuerst werde ich den Code hier setzen.Laravel: Zustand des Controllers in Ajax Anruf

Das ist mein Ajax-Code:

//View para crear proyecto 
$("#myFormProject").submit(function(e){ 
    e.preventDefault(); 
    var formData = new FormData($(this)[0]); 
    $.ajax({ 
     url:'/admin/projects/postUpload', 
     type:'POST', 
     data: formData, 
     success: function(){ 
      $("#formcrearproyecto").fadeOut(1000); 
      $("#formcreartraducciones").fadeIn(1000); 
     }, 
     cache: false, 
     contentType: false, 
     processData: false 
    }); 
    return false; 
}); 

Mein Controller-Funktion sieht wie folgt aus:

public function storeProject(Request $request) 
    { 
    $clients = DB::table('clients')->orderBy('name','asc')->get(); 
    $projects = DB::table('projects')->get(); 
    $project = new Project(); 
    $project->slug = $request->input("slug"); 
    $project->order = DB::table('projects') 
        ->where('order', DB::raw("(select max(`order`) from projects)")) 
        ->first() 
        ->order + 1; 
    $project->public = 0; 
    $imagen = getimagesize($request->file('pathheader')); 
    $ancho = $imagen[0]; 
    $altura = $imagen[1]; 
    $maxancho = 1930; 
    $minancho = 1910; 
    $maxaltura = 822; 
    $minaltura = 802; 
    $imagen2 = getimagesize($request->file('pathhome')); 
    $ancho2 = $imagen2[0]; 
    $altura2 = $imagen2[1]; 
    $maxancho2 = 778; 
    $minancho2 = 358; 
    $maxaltura2 = 355; 
    $minaltura2 = 335; 
    if ($ancho<$maxancho && $ancho>$minancho && $altura<$maxaltura && $altura>$minaltura && 
    $ancho2<$maxancho2 && $ancho2>$minancho2 && $altura2<$maxaltura2 && $altura2>$minaltura2){ 
    \Storage::disk('projects')->makeDirectory($project->slug); 
    $project->pathheader = \Storage::disk('projects')->putFileAs($project->slug, $request->file('pathheader'),'header.jpg'); 
    $project->pathhome = \Storage::disk('projects')->putFileAs($project->slug, $request->file('pathhome'),'home.jpg'); 
    $project->save(); 
    File::put(resource_path('views/projects/').$project->slug.'.blade.php',''); 
    } 
    else{ 
     Session::flash('warning','Las medidas de almenos una de las 2 imagenes no es la correcta.'); 
      return view('cms.public.views.projects.menu',['projects' => $projects, 'clients' => $clients]); 
    } 

}

Das Problem ist, wenn ich ein Bild dann einreichen eingeben nicht in IF und gehen Sie zu ELSE gleichermaßen machen das Ausblenden und Einblenden.

Wie kann ich eine Bedingung in Ajax machen, um zu überprüfen, ob man hineingeht oder nicht, und Ein- und Ausblenden macht oder einfach die Session :: flash anzeigt?

Vielen Dank.

+0

Sie meinen Sie eingeben möchten, wenn Bild ist da in der Anfrage richtig? –

+0

Ich möchte fadeOut div und Fadein div nur wenn Bild die richtige Größe haben. Wenn ja, wenn ja, mache das Div-Ausblenden und Fadein, aber wenn du sonst nur die Sitzung machst: Flash –

Antwort

2

Ich glaube, Sie Verwendung von json Rückgabetyp wie unten machen -

// this code is for backend 
if($ancho2<$maxancho2 && $ancho2>$minancho2 && $altura2<$maxaltura2 && $altura2>$minaltura2) 
{ 
    // your code here 
    ...... 

    $project->save(); 
    File::put(resource_path('views/projects/').$project->slug.'.blade.php',''); 
    // returns json string to the client 
    return json_encode(['stauts'=>'ok']); 
} 
else{ 
    $data = array('status' => 'error', 
        'warning' => 'Las medidas de almenos una de las 2 imagenes no es la correcta.'); 
     return json_encode($data); 
} 

Nun müssen Sie diese Seite in Client in JavaScript ..

$("#myFormProject").submit(function(e){ 
    e.preventDefault(); 
    var formData = new FormData($(this)[0]); 
    $.ajax({ 
     url:'/admin/projects/postUpload', 
     type:'POST', 
     data: formData, 
     success: function(responseText){ 
      // this will convert json string to json object 
      $responseData = JSON.parse(responseText); 
      if($responseData.status == 'ok') 
      { 
       $("#formcrearproyecto").fadeOut(1000); 
       $("#formcreartraducciones").fadeIn(1000); 
      } 
      else if($responseData.status == 'error'){ 
        alert('Handled error and the warning message is '+$responseData.warning); 
      } 
      else{ 
       alert('Error happened in backend,but not handled'); 
      } 
     }, 
     cache: false, 
     contentType: false, 
     processData: false 
    }); 
    return false; 
}); 
+0

lass mich wissen, ob es für dich funktioniert oder nicht –

+0

Funktioniert perfekt und einfach zu verstehen. Lassen Sie mich Sie etwas fragen, Warnungen, die ich denke, dass es schmutzig ist, wie kann ich Sitzung Blitz zurückbringen? Vielen Dank. –

+0

können Sie Bootstrap-Alarm- oder Benachrichtigungs-Plugins wie Bootstrap Growl Notifications, Toastr Notification, Notific8 Notification verwenden. Wenn Sie Hilfe brauchen, fühlen Sie sich frei –

Verwandte Themen