2015-02-20 17 views
7

में एजेक्स कॉल से मैं एक दृश्य कैसे वापस कर सकता हूं मैं AJAX कॉल पर वापस आने के लिए एक HTML तालिका प्राप्त करने का प्रयास कर रहा हूं।लैरवेल 5

मार्ग:

Route::post('job/userjobs', '[email protected]'); 

बुला पृष्ठ पर ajax:

function getUserJobs(userid) { 
    $_token = "{{ csrf_token() }}"; 
    var userid = userid; 
    $.ajax({ 
     headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') }, 
     url: "{{ url('/job/userjobs') }}", 
     type: 'POST', 
     cache: false, 
     data: { 'userid': userid, '_token': $_token }, //see the $_token 
     datatype: 'html', 
     beforeSend: function() { 
      //something before send 
     }, 
     success: function(data) { 
      console.log('success'); 
      console.log(data); 
      //success 
      //var data = $.parseJSON(data); 
      if(data.success == true) { 
       //user_jobs div defined on page 
       $('#user_jobs').html(data.html); 
      } else { 
       $('#user_jobs').html(data.html + '{{ $user->username }}'); 
      } 
     }, 
     error: function(xhr,textStatus,thrownError) { 
      alert(xhr + "\n" + textStatus + "\n" + thrownError); 
     } 
    }); 
} 



//on page load 
getUserJobs("{{ $user->id }}"); 

नियंत्रक:

public function userjobs() { 
    $input = Request::all(); 
    if(Request::isMethod('post') && Request::ajax()) { 
     if($input['userid']) { 
      $userjobs = Userjob::select('select * from user_jobs where user_id = ?', array($input['userid'])); 
      if(! $userjobs) { 
       return response()->json(array('success' => false, 'html'=>'No Jobs assigned to ')); 
      } 
      $returnHTML = view('job.userjobs')->with('userjobs', $userjobs); 
      return response()->json(array('success' => true, 'html'=>$returnHTML)); 

     } 
    } 
} 

दृश्य:

@section('content') 
<table class="table table-striped"> 
    <tbody> 
@foreach ($userjobs as $userjob) 
     <tr> 
      <td><strong>{{ $userjob->title }}</strong><br /> 
      {{ $userjob->description }} 
      </td> 
     </tr> 
@endforeach 
</table> 
@stop 

मुझे json.html डेटा में कुछ भी नहीं मिल रहा है। कुछ भी तो नहीं। यदि नियंत्रक में मैं कहता हूं:

return response()->json(array('success' => true, 'html'=>'<span>html here</html>')); 

यह ठीक काम करता है।

मैं कैसे एक दृश्य के एक ajax कॉल से Laravel 5.

उत्तर

21

में view() समारोह सिर्फ View वर्ग का एक उदाहरण बनाता लौट सकते हैं। सिर्फ एक HTML स्ट्रिंग नहीं। इस अगर हालत

$returnHTML = view('job.userjobs')->with('userjobs', $userjobs)->render(); 
return response()->json(array('success' => true, 'html'=>$returnHTML)); 
+0

ठीक है - उपरोक्त वर्णित दृश्य में जोड़ा गया -> प्रस्तुत() जोड़ा गया है। लेकिन मुझे अभी भी आउटपुट में कोई एचटीएमएल नहीं मिल रहा है। यहां कंसोल आउटपुट है: 'ऑब्जेक्ट {सफलता: सत्य, एचटीएमएल: ""}'। कोई और विचार? –

+0

यदि मैं यह 'वापसी प्रतिक्रिया() -> जेसन (सरणी (' सफलता '=> सत्य,' एचटीएमएल '=>'

hello
'));' यह अपेक्षाकृत आउटपुट करता है। –

+0

हम्म, मैं इसे या तो काम नहीं कर सकता ... ऐसा लगता है कि 'रेंडर()' को स्वचालित रूप से सामग्री आउटपुट करता है और इसे स्ट्रिंग के रूप में वापस नहीं करता है। यह लैरावेल 4 में अलग था और मुझे यकीन नहीं है कि यह एक सुविधा या बग है। – lukasgeiter

0

निकालें और देखें कि क्या यह काम करता है

if(Request::isMethod('post') && Request::ajax()) { 
1

ठीक है - मैं परीक्षण और त्रुटि है कि आप में ब्लेड टेम्पलेट आदेशों को शामिल नहीं करते द्वारा पाया: उसके लिए आपको render() बुलाना चाहिए काम करने के लिए फ़ाइल देखें।

मैं था:

@section('content') 
<table class="table table-striped"> 
    <tbody> 
@foreach ($userjobs as $userjob) 
     <tr> 
      <td><strong>{{ $userjob->title }}</strong><br /> 
      {{ $userjob->description }} 
      </td> 
     </tr> 
@endforeach 
</table> 
@stop 

और अब के साथ अपने काम कर रहे:

<table class="table table-striped"> 
    <tbody> 
    <?php foreach ($userjobs as $userjob){?> 
     <tr> 
      <td><strong><?php echo $userjob->title; ?></strong><br /> 
      <?php echo $userjob->description; ?> 
      </td> 
     </tr> 
    <?php } ?> 
</table> 

हालांकि मैं खोजा गया - मैं इस बताते हुए प्रलेखन कभी नहीं मिली।

4

उपयोग स्ट्रिंग समारोह से पहले की तरह के रूप में

return (String) view('Company.allUserAjax'); 
2

अगर आपके ajax सही है और आप अपने डीबी

$returnHTML = view('job.userjobs',[' userjobs'=> $userjobs])->render();// or method that you prefere to return data + RENDER is the key here 
      return response()->json(array('success' => true, 'html'=>$returnHTML)); 
+0

धन्यवाद इस समाधान ने मेरे लिए काम किया। आपने मेरा दिन बचाया बहुत बहुत धन्यवाद –

+0

@ संजय शर्मा आप का स्वागत है। रेंडर विधि ने मुझे एक से अधिक बार बचाया! – Maky

0

से परिणाम हो रही है idk अगर आप अभी भी इस सवाल का जवाब, लेकिन मैं के लिए देख रहे हैं दृश्य फ़ाइल नाम आपके जैसे ही मुद्दे में भाग गया, यह खाली लौट रहा था। सफलता की कुंजी आपके आंशिक दृश्य

संबंधित मुद्दे