2014-12-11 4 views
0

У меня мозг тает над чем-то вроде просто. Я использую Ajax для загрузки изображений в этом кодеlaravel return view :: make not working

foreach(Input::file('image') as $image){ 

     $imagename = $image->getClientOriginalName(); 

     $uploadflag = $image->move('public/uploads', $imagename); 

     $urlPath = 'uploads/'; 

     $showPath = $urlPath . $imagename; 

     if($uploadflag){ 

      $uploadedImages[] = $showPath; 
     } 
    } 
    return View::make('index') 
     ->with('uploadedImages', $uploadedImages); 

целевая страница является index.blade.php, который содержит

@foreach($uploadedImages as $uploadedImage) 

{{ HTML::image($uploadedImage) }} 

@endforeach 

В Chrome DevTools Network Preview/Response можно увидеть изображения на страница

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 


    <div class="container"> 

     <div class="row"> 


      <img src="http://localhost:8000/uploads/3.jpg"> 


      <img src="http://localhost:8000/uploads/4.jpg"> 


     </div> 

    </div> 

Но страница не загружается в браузер, она сохраняется на странице загрузки. Если удалить JQuery ....

<script> 
var form = document.querySelector('form'); 
var request = new XMLHttpRequest(); 
form.addEventListener('submit', function(e) { 
    e.preventDefault(); 
    var formdata = new FormData(form); 
    request.open('post', 'submit', true); 
    request.send(formdata); 

}, false); 

</script> 

.... то works.So, что происходит с JQuery, который останавливает возвращение View :: сделать работу и что я могу сделать, чтобы получить его работать?

ОБНОВЛЕНО Вот некоторые из вариантов, которые я попробовал - ajaxindex это идентификатор контейнера DIV в index.blade.php

$(document).ajaxSuccess(function() { 
    $("#ajaxindex").append(data); 
}); 

$(document).ajaxSuccess(function() { 
    $("#ajaxindex").append($uploadedImages); 
}); 

$.ajax("index", function(data) { 
    $("#ajaxindex").append(data); 
}); 
+1

Добро пожаловать в SO! Вы отправляете форму через Ajax и, очевидно, получаете правильный ответ через Ajax. Вы не можете отправлять через Ajax и ожидать перенаправления. – PeterKA

+0

Спасибо за ваше приветствие! Так вот в чем причина проблемы, но как я могу получить данные в виде для ее отображения? – metarzan

+0

Поскольку вы получаете данные обратно через ajax, вы можете манипулировать содержимым текущей страницы, чтобы показать ответ с сервера ... у вас есть это ---> просто отобразить его ... '$ ('. Some -selector '). append (data); 'Не стесняйтесь использовать'. $ .ajax() 'или' $ .post() '. – PeterKA

ответ

0

Добавьте следующую разметку index.blade.php:

<div id="uploaded_images"></div> 

Затем используйте JavaScript/jQuery вместо JavaScript, который вы отправили:

$(document).ready(function() { 
    $('form').on('submit', function(e) { 
     e.preventDefault(); 
     var formdata = new FormData(); 
     $.ajax({ 
      url: this.action, 
      type: 'POST', 
      data: formdata, 
      cache: false, 
      dataType: 'html', 
      processData: false, 
      contentType: false, 
      success: function(data) { 
       $('#uploaded_images').html(data); 
      } 
     }); 
    }); 
}); 
+0

Hi PeterKA, спасибо за это. Я все еще получаю неопределенную переменную: uploadedImages из laravel. Вышеприведенный код предназначен для вывода данных в div, но я хотел бы вывести данные, которые мог получить и манипулировать файлом php foreach Input :: (изображение «как изображение»). Является ли то, что я ищу не выполнимо, используя Ajax с php? Кажется, я так близок, но пока это очень расстраивает. Благодарю. – metarzan

+0

Извините, что комментарий был бессвязным. Я уже могу получить данные из Ajax в php и поместить данные в цикл uploadImage @foreach. Проблема в том, что я не могу отобразить страницу. Как я уже сказал, DevTools показывает изображения на странице, но горе мне, что я застрял там. – metarzan

+0

*** Вы не можете отправить через Ajax и ожидать перенаправления. *** Вам нужно разъяснение по этому утверждению? – PeterKA