0

我試圖使用Javascript獲取選定的值並將值發送到服務器端以便使用Laravel-PHP進行處理。這是迄今爲止我寫的ocde,但我沒有在服務器端得到它,有什麼我需要做更多?使用JavaScript從下拉菜單L-5.1中獲取選定的值

這是刀片文件:

{!! Form::open(array('url' => 'created-products', 'method' => 'post'), array('id'=>'createproduct')) !!} 
{!! Form::token() !!} 

    @if(!Auth::check()) 
     <p><h3>Please login to create product</h3></p> 
     @else 
      <p>{!! Form::select('companyname', array('' => 'Select a Company') + $listCompanies, null, array('id'=>'companynameId')) !!} </p> 
      <p>{!! Form::text('productname', Input::old('productname')) !!}</p> 
      <p>{!! Form::hidden('hiddenCompanyName', '', array('id'=>'selectedCompanyHidden')) !!}</p> 
      <p>{!! Form::submit('CREATE PRODUCT') !!}</p> 

    @endif 

    <script> 
     var returnedCompany = document.getElementById("companynameId"); 
     var storedCompany = returnedCompany.options[returnedCompany.selectedIndex].value; 

     var hiddenCompanyId = document.getElementsByName('hiddenCompanyName'); 
     document.createproduct.hiddenCompanyId.value = storedCompany; 
     document.forms["createproduct"].submit(); 
    </script> 
{!! Form::close() !!} 

這是從刀片文件中獲取價值的功能:

private static function compareCompany(ProductRequest $productRequest){ 
     $companyPicked = $productRequest->hiddenCompanyName; 
     $listedCompanies = Company::where('user_id', '=', Auth::user()->id); 
     $companies = new Company; 
     if($companies->user_id === Auth::user()->id) 
     { 
      foreach($listedCompanies as $company) { 
       if($company->companyname === $companyPicked) 
       { 
        return $company->id; 
       } 
      } 
     } 
    } 

這是將其保存到數據庫的功能。

public function store(ProductRequest $productRequest) 
{ 
    $product = new Product; 
    $company = new Company; 
    if($productRequest->isMethod('post')){ 

    $product->user_id  = Auth::user()->id; 
    $product->company_id = $this->compareCompany($productRequest); 
    $product->companyname = $productRequest->companyname; 
    $product->productname = $productRequest->productname; 

    $product->save(); 
    return redirect()->route('companyindex')->with('message', 'Your question has been posted.'); 
    }else{ 
     return redirect('company-create')->withErrors($productRequest)->withInput(); 
    } 
} 

請幫忙。我已經有好幾天了。欣賞。

+0

'getElementsByName'返回(X)HTML文檔中給定名稱的節點列表集合。試試這個:var returnedCompany = document.getElementById(「companynameId」); var storedCompany = returnedCompany.value;document.getElementById('selectedCompanyHidden')。value = storedCompany document.forms [「createproduct」]。submit();' – Rayon

+0

謝謝,Rayon,我現在就試試看。 – kehinde

回答

0

你現在會提交表單,你之前做任何事情的代碼,你應該增加onsubmit事件:

document.getElementById("createproduct").onsubmit=function(e) 
{ 
    e.preventDefault(); 

    var returnedCompany = document.getElementById("companynameId"); 
    var storedCompany = returnedCompany.options[returnedCompany.selectedIndex].value; 
    var hiddenCompanyId = document.getElementsByName('hiddenCompanyName')[0]; 

    document.createproduct.hiddenCompanyId.value = storedCompany; 
    document.forms["createproduct"].submit(); 
}; 

希望這有助於。

+0

謝謝@扎卡里亞,我已經試過這個,但仍然給出一個空的迴應,它無法得到id。我相信,因爲我已經測試過顯示選定的值,但我不確定JavaScript是否將任何變量提交給PHP/Laravel函數來處理它。 – kehinde

相關問題