2015-10-06 3 views
3

Общая проблема заключается в том, что я не могу вернуть эхо или вернуться через ajax из другого файла. Предупреждение (msg) пустое. Предотвращает ли это предотвращение.default отправку GET? Я не очень свободно программирую, не могли бы вы помочь мне в этом?Успешный сценарий ajax не дает мне ответа

У меня есть простой вид:

<form class='findAndBlock1' method="GET" action=""> 
    <input type='text' name="nameToBlock1" placeholder=" who do you want to block?" class='nameInput'> 
    <input type='submit' value="Search" class='submitInput1'> 
</form> 

После нажатия его, Ajax скрипт начинает:

<script> 
$(".submitInput1").click(function(){ 

    event.preventDefault(); 

    $.ajax({ 
     type: "GET", 
     url: "/searchFriendsToBlock", 
     data: { 

     }, 
     success : function(msg) { 
      alert(msg); 
     }, 
     error : function(error) { 
      alert('error'); 
     } 
    }); 
}); 
</script> 

Он направлен на сценарий, который перенаправляется так:

Route::any('/searchFriendsToBlock', '[email protected]'); 

Вот сценарий, который проходит через ajax:

public function searchFriendsToBlock() { 

     $q = Input::get('nameToBlock'); 
     if (strlen($q) < 3) 
      return null; 

     $users = DB::table('users')->where //here goes some long request 

     foreach ($users as $user) { 

      if (!$user->f_first_name_public) 
       $user->first_name = ""; 
      if (!$user->f_last_name_public) 
       $user->last_name = ""; 

      $user->avatar = User::getUserAvatar($user->id); 
      $user->id = ""; 
      $user->type = "user"; 
      $newArr[] = $user; 
     } 
     echo "hello"; 
     return Response::json($newArr); 
    } 
+1

вашей preventDefault не работает anyway.add событие в виде 'function (event)' please do console.log (msg) – guradio

+1

@Pekka Это верно для FF, который делает sn't использовать глобальную модель событий, поэтому ya, OP должен передать 'event' в качестве параметра обратного вызова обработчика –

+0

@Pekka. Этот файл prevent.default делает форму, не обновляющую мою страницу. Хорошо, теперь я проверяю console.log. – WantToBeProgrammer

ответ

1

Используйте dataType параметр в запросе Ajax, как вы отправляете ответ в формате json по умолчанию dataType установлен в html в jQuery.ajax()

<script> 
    $(".submitInput1").click(function(){ 

     event.preventDefault(); 

     $.ajax({ 
      type: "GET", 
      dataType: "json", 
      url: "/searchFriendsToBlock", 
      data: { 

      }, 
      success : function(msg) { 
       alert(msg.type); 
      }, 
      error : function(error) { 
       alert('error'); 
      } 
     }); 

    }); 
</script> 

И Ваш сценарий должен быть, как этот

public function searchFriendsToBlock() 
{         
    $q = Input::get('nameToBlock'); 
    if (strlen($q) < 3) 
     return null; 

    $users = DB::table('users')->where //here goes some long request 
    $response = array(); 
    foreach ($users as $user) { 
     if (!$user->f_first_name_public) 
      $user->first_name = ""; 
     if (!$user->f_last_name_public) 
      $user->last_name = ""; 

     $user->avatar = User::getUserAvatar($user->id); 
     $user->id = ""; 
     $user->type = "user"; 
     $newArr[] = $user; 
    } 
    $response['type'] = 'sussess';  
    $response['data'] = $newArr;  
    return Response::json($response); 
} 
+0

Благодарим вас за ответ. После добавления dataType я вижу предупреждение «null». И этот .keyInJson (должен ли я действительно добавить его тоже? Console говорит, что его что-то не определено). Чрезмерное программирование сложно>.> – WantToBeProgrammer

+0

@WantToBeProgrammer это должен быть ваш ключ в ответе –

+0

Хорошо, спасибо. Похоже, что это работает сейчас, но ответ неверен? Означает ли это, что что-то по-прежнему не так? – WantToBeProgrammer