2016-12-07 5 views
1

Controller:Laravel Encoder/Decoder ajax url

public function ajaxsearch(Request $request) 
    { 
     if ($request->ajax()) { 
      $output = ""; 
      $productindex = Product::where('product_name', 'LIKE', '%' . $request->states . '%')->take(4)->get(); 

      if ($productindex) { 
       foreach ($productindex as $key => $value) { 
        $output .= '<div> 
           <img src="/images/'. $value->slidephoto->first()->sm_photo .'.jpg" width="400px"> 
           <h3>'. $value->product_name .'</h3> 
           </div>'; 
       } 
       return Response($output); 
      } 
     } 
     return view('main.ajax'); 
    } 

jquery:

$('#searchinput').on('keyup', function(){ 
     $value=$(this).val(); 
     $.ajax({ 
     type: 'get', 
     url: '{{URL::to('ajaxsearch')}}', 
     data: {'states':$value}, 
     success:function(data){ 
      $('#fixedsearch').html(data); 

     } 
     }); 
    }); 

Wenn Ajax-Wert abruft, die nicht in Englisch ist ich dieses Problem in meinem Konsolenprotokoll erhalten.

191.js:5 GET http://localhost:8000/ajaxsearch?states=%CF%80 500 (Internal Server Error) 

Ich benutze Laravel 5.1 und jquery v. 1.9.1. Die Fremdsprache, die ich als zusätzliche Sprache verwende, ist das Griechische, dass ich dieses spezifische Problem habe.

+2

Es sagt Ihr PHP-Skript CRASHED der Server – RiggsFolly

+0

es funktioniert in Englisch –

+0

Überprüfen Sie Ihre 'laravel.log' Datei, um mehr Details über den Fehler zu erhalten. –

Antwort

1

Verwendung Wenn Sie URL-codierte Zeichen in übergeben, können Sie einfach urldecode nutzen sie in ihre richtige Zeichen zurück zu konvertieren.

Da URL-codierte Zeichen im Grunde Zeichenfolgen sind, die Prozentzeichen enthalten, verwechselt dieses wirklich SQL, wenn Sie mit mehr Prozentzeichen verketten.

Product::where('product_name', 'LIKE', '%' . $request->states . '%')

$request->states ist %CF%80, so erstellt SQL wie ... from product where product_name like %%CF%80% aussehen wird - die Prozentzeichen machen keinen Sinn in einem like überprüfen.

Stattdessen Product::where('product_name', 'LIKE', '%' . urldecode($request->states) . '%')

$request->states ist jetzt π, so erstellt SQL wie ... from product where product_name like %π% aussehen wird.

+0

Ich habe den gleichen Fehler. Warum? Aber ich denke du bist nah dran für die Lösung. –

+0

Ich habe bisher den utf8_encode() und urlencode() ausprobiert. Durch diese Funktionen habe ich keine Fehler bekommen, aber auch keine Ergebnisse aus dem Griechischen. Urldecode() funktioniert nicht. –

+0

Was funktioniert nicht mit 'urldecode'? Was ist Ihr erwartetes Ergebnis von 'urldecode' und was ist das tatsächliche Ergebnis? – Greg

-2

versuchen encodeURI() javscript Funktion

$('#searchinput').on('keyup', function(){ 
     $value=$(this).val(); 
     $.ajax({ 
     type: 'get', 
     url: '{{URL::to('ajaxsearch')}}', 
     data: {'states':encodeURI($value)}, 
     success:function(data){ 
      $('#fixedsearch').html(data); 

     } 
     }); 
    }); 
+0

Ich habe keine Fehler und ich habe nicht die griechischen Ergebnisse nur das Englisch. Warum? –

+0

können Sie die Anforderungsparameter in der Entwicklerkonsole überprüfen, werden sie richtig? –

+0

Ich LÖSE das Problem, wie Sie in den obigen Antworten sehen. Es war $ value-> slidephoto-> first() -> sm_photo. Wenn es Nullwert ist, wird der URL-Code irgendwie nicht wirksam (die Decodierung). Das ist seltsam und ich weiß nicht, wie ich dieses kleine Problem lösen soll. –