2015-10-22 8 views
6

मैं AJAX का उपयोग कर Laravel नियंत्रक में एक समारोह में objs सरणी पारित करने की कोशिश कर रहा हूँ। मैं पोस्ट के बाद किसी भी डेटा प्राप्त नहीं कर रहा हूँ।देखने के लिए जावास्क्रिप्ट सरणी पास करना Laravel नियंत्रक

<script> 

     var itemCount = 0; 
     var objs=[]; 
     $(document).ready(function(){ 


      var temp_objs=[]; 

      $("#add_button").click(function() { 

       var html = ""; 

       var obj = { 
        "ROW_ID": itemCount, 
        "STREET_ADDRESS": $("#street_address").val(), 
        "CITY": $("#city").val(), 
        "ZIP": $("#zip").val() 
       } 

       // add object 
       objs.push(JSON.stringify(obj)); 

       itemCount++; 
       // dynamically create rows in the table 
       html = "<tr id='tr" + itemCount + "'><td>" + obj['STREET_ADDRESS'] + "</td> <td>" + obj['CITY'] + " </td> <td>" + obj['ZIP'] + " </td><td><input type='button' id='" + itemCount + "' value='remove'></td> </tr>"; 

       //add to the table 
       $("#multiple_table").append(html) 

       // The remove button click 
       $("#" + itemCount).click(function() { 
        var buttonId = $(this).attr("id"); 
        //write the logic for removing from the array 
        $("#tr" + buttonId).remove(); 
       }); 

      }); 

      $("#submit").click(function() { 
       $.ajax({ 
        url:'/app/Http/Controllers/Search/search_address', 
        type: 'POST', 
        dataType:'json', 
        contentType: 'application/json', 

        data: objs 
       }); 

      }); 

     }); 



    </script> 

मेरी नियंत्रक समारोह में इस

public function search_address(){ 
    $data = json_decode($_POST['data'], true); 
    print_r($data); 
} 

मुझे लगता है कि मैं ajax में यूआरएल के साथ एक समस्या हो रहा है और मुझे यकीन है कि कैसे एक नियंत्रक के url प्राप्त किया जाता है नहीं कर रहा हूँ की तरह है।

धन्यवाद

+0

डेवलपर टूल में नेटवर्क टैब की जांच करें .. – Rayon

+0

ने आपके AJAX लोडिंग किया था? क्या आपने यह देखने के लिए अपने ब्राउज़र कंसोल की जांच की है कि क्या कोई त्रुटि फेंक दी गई है? – Vishal

+0

एक सेकंड के लिए जावास्क्रिप्ट/AJAX के बारे में भूल जाओ ... क्या आप HTML/PHP/Laravel में एक फॉर्म बना सकते हैं जो आप इसे करना चाहते हैं? मैं यह सुनिश्चित करना चाहता हूं कि आपका नियंत्रक और रूटिंग पहले काम करे। –

उत्तर

0

आप बदल सकते हैं:

$data = json_decode($_POST['data'], true); 

रहे हैं:

$data = json_decode(Input::get('data')); 

और सुनिश्चित करें कि आपके: use Input; ऊपर अपने class extends Controller

देखें कि अगर काम करता है।

संपादित करें: यह भी सुनिश्चित करें कि आपके मार्ग (नियंत्रकों फ़ोल्डर में) सही हैं।

+0

'इनपुट :: पोस्ट' ??? – Rayon

+0

नहीं, 'इनपुट :: get', मैं वर्तमान में लार्वेल के साथ एक परियोजना पर काम कर रहा हूं, इस तरह हम इसे करते हैं। – Maarten

+0

ठीक है! किसी भी कारण से '$ _POST' काम नहीं कर रहा है? – Rayon

0

आप निम्न आप पोस्ट अजाक्स में रखकर अपने जावास्क्रिप्ट console.log() चाहिए:

error : function(e){ 
    console.log(e); 
} 

फिर आप देख सकते हैं कि त्रुटियों आप अपने 'ब्राउज़रों डेवलपर्स उपकरण पैनल में हो रही है।

आपको यह भी पता होना चाहिए कि लार्वाल पदों को csrf token की आवश्यकता होती है जब तक कि आप उन्हें स्पष्ट रूप से बंद नहीं कर देते हैं, जिसका अर्थ है कि आपको अपनी पोस्ट में यह टोकन भी जोड़ना होगा।

$("#submit").on('click', function() { 
    $.ajax({ 
     url:'/app/Http/Controllers/Search/search_address', // Is this what you meant, is this the route you set up? 
     type: 'POST', 
     data: {'data': objs, '_token' : '<?=csrf_token()?>'}, 
     success : function(data){ 
      // Do what you want with your data on success 
     }, 
     error : function(e){ 
      console.log(e); 
     } 
    }); 
}); 

सूचना है कि मैं जावास्क्रिप्ट, बस बिंदु को वर्णन करने के लिए है जो अंदर php एम्बेड किया हो: तो आप के साथ खत्म करना चाहिए। आदर्श रूप से जावास्क्रिप्ट को अपनी फाइलों में रखा जाता है, इसलिए आपको इस टोकन को पास करने के लिए एक रास्ता खोजने की आवश्यकता होगी। मैं व्यक्तिगत रूप से बात की इस प्रकार के लिए knockoutjs का उपयोग करें (AngularJS भी लोकप्रिय है), लेकिन आप आसानी से की तरह कुछ कर सकते हैं: अपने HTML में

<input type="hidden" id="_token" value="{{ csrf_token() }}" /> 

, तो अपने ajax अनुरोध अंदर से यह मान खींच:

data: {'data': objs, '_token' : $('#_token').val()} 

संपादित

मैं सिर्फ अपने यूआरएल ध्यान दिया है, यह लगता है कि आप सीधे नियंत्रक का उपयोग करने की कोशिश कर रहे हैं।

Route::post('/searchAddress', '[email protected]_address'); 

तब का उपयोग करें:: आप इस तरह के रूप में, अपने routes.php फ़ाइल में एक मार्ग निर्धारित करने की आवश्यकता

url: /searchAddress 
अपने ajax अनुरोध में

+0

मैंने आपके सुझाव की कोशिश की और यह अभी भी काम नहीं करता है। मुझे किसी अन्य चीज के बारे में पता होना चाहिए? –

+0

आपको अपने ब्राउज़र जावास्क्रिप्ट कंसोल में क्या परिणाम मिला? साथ ही, क्या आपने यह देखने के लिए अपने लॉग की जांच की है कि क्या कोई त्रुटि फेंक दी गई है? –

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