maudev
maudev

Reputation: 1101

Laravel & Ajax: Send specific url to get data?

i'm working with Laravel and Ajax to get data via urls,i have this one:

Route::get('providers/{providers}','ProvidersController@getProviders');

That function on my controller returns me all providers of an specific id, this works fine, but i need to populate this data in my select input, i'm currently getting it like this:

  $(document).ready(function(){
$('#providers_types_id').change(function(event){
  $.get("providers/"+event.target.value+"",function(response,provider){
    $('#providers_id').empty();
    for(i=0; i<response.length; i++){
      $("#providers_id").append("<option value='"+response[i].id+"'>"+response[i].company+"</option>");
    }
    });
  });
});

So, i'm having troubles sending the url to get data, i need to send this:

http://myapp.local/providers/1

But i don't know why it's sending the currently url concatenated with my url:

http://myapp.local/prices/3/providers/1

Obviously i got 404 error, how i can send only the first url to get my data? Sorry for my bad english !

Upvotes: 0

Views: 352

Answers (2)

user6704606
user6704606

Reputation:

I think a better solution for you would be naming your route

Route::get('providers/{providers}','ProvidersController@getProviders')->name('anything');

And in your js file just before the $.get() put the following url variable

var url = '{{ route('anything', ['providers'=>'']) }}'+'/'+event.target.value;

Then use this url in $.get()

$.get(url, function(response,provider){ 

    // Your code ... 

});

Upvotes: 0

Sherif
Sherif

Reputation: 1537

just add a "/" at the start of url

$.get("/providers/"+event.target.value+"",function(response,provider){
    $('#providers_id').empty();
    for(i=0; i<response.length; i++){
      $("#providers_id").append("<option value='"+response[i].id+"'>"+response[i].company+"</option>");
    }
    });
  });

Upvotes: 2

Related Questions