a.nivesh
a.nivesh

Reputation: 9

Can't put data on input value from ajax success function returned by controller laravel

I have tried to get values of an object using ajax. I stored all properties of that object on array. Now I need to access that array on ajax success function. Here is my controller.

public function sub(Request $request)
{
    if($request->ajax())
    {
        $id = $request->get('selected');
        if($id != null) {
            $sub = DB::table('companies')->where('id', $id)->first();
            if ($sub)
            {
                $subComp = [
                    'name' => $sub->name,
                    'address' => $sub->address,
                    'contact' => $sub->contact_num
                ];
            }
        }
    }
    echo json_encode($subComp);
}

And this is my html.

<div id="subCompany">
    <input type="text" name="subname">
    <input type="text" name="subaddress">
    <input type="text" name="subcontact">
</div>

And my script:

$.ajax({
    type: 'GET',
    url: "{{ route('leader') }}",
    dataType:'json',
    data: {'selected': selected},
    success: function (subComp) {
        alert('success');
        $('#subCompany[name="subname"]').val(subComp.name);
        $('#subCompany[name="subaddress"]').val(subComp.address);
        $('#subCompany[name="subcontact"]').val(subComp.contact);
    }

});

Upvotes: 0

Views: 919

Answers (1)

Pars
Pars

Reputation: 5262

I think the problem is your selector

Change this:

$('#subCompany[name="subname"]').val(subComp.name);
$('#subCompany[name="subaddress"]').val(subComp.address);
$('#subCompany[name="subcontact"]').val(subComp.contact);

to this:

var subCompanyEl = $('#subCompany'); // its just for caching
subCompanyEl.find('input[name=subname]').val(subComp.name);
subCompanyEl.find('input[name=subaddress]').val(subComp.address);
subCompanyEl.find('input[name=subcontact]').val(subComp.contact);

Upvotes: 1

Related Questions