2017-08-30 26 views
1

私は、これは、データが選択ボックスにajaxコールで値を返す方法は?

を使用して動的に選択された値を返すajax.phpファイル

function interncompany(){ 

global $DB; 

//query by experience total post 
$sql = 'SELECT lc.id, count(ljj.job_id) as count, lc.companyname FROM {local_jobs_job} ljj INNER JOIN {local_companydetail} lc ON ljj.job_company_userid = lc.userid where ljj.job_type = 1 group by lc.companyname'; 


//get the query into record 
$data = $DB->get_records_sql($sql); 

//put the query into array 
$rows = array(); 

$rows = array_map(function($item) { 
return (object) ['c' => [ 
    (object) ['v' => $item->companyname, 'f' => null], 
    (object) ['v' => intval($item->count), 'f' => null] 
]]; 
}, array_values($data)); 


$cols = [ 
(object) ['id' => '', 'label' => 'LABEL', 'pattern' => '', 'type' => 'string'], 
(object) ['id' => '', 'label' => 'TOTAL', 'pattern' => '', 'type' => 'number'], 
]; 

$returndata = new stdClass; 
$returndata->cols = $cols; 
$returndata->rows = $rows; 

echo json_encode($returndata); 

} 

ある

var jsonPieChartData = $.ajax({ 
       url: "ajax.php", 
       data: {selValue1 : 1,selValue2 : 1} , 
       dataType: "json", 
       async: false 
       }).responseText; 
     //create our data table out of json data loaded from server 
     console.log(jsonPieChartData); 

データからGoogleのチャートを描画する(AJAX呼び出し)

if ($select1 == '1') { 

    if ($select2 == '1') { 

       jobcompany(); 

       } 

    if ($select2 == '2') { 

       joblocation(); 
       } 

     if ($select2 == '3') { 
       jobcategory(); 
     } 


     if ($select2 == '4') { 
       jobsalary(); 
     } 

     if ($select2 == '5') { 
       jobexperience(); 
     } 


     if ($select2 == '6') { 
       joblevel(); 
     } 

} 

elseif ($select1 == '2') { 

    if ($select2 == '1') { 

       interncompany(); 

       } 

    if ($select2 == '2') { 
       internlocation(); 
       } 

     if ($select2 == '3') { 
       interncategory(); 
     } 


     if ($select2 == '4') { 
       internsalary(); 
     } 

     if ($select2 == '5') { 
       internexperience(); 
     } 


     if ($select2 == '6') { 
       internlevel(); 
     } 
    } 

私の質問:どのようにデータを動的に取得し、結果をデータに挿入する機能を作成したいのですか?{}ので、データはPHPファイルに戻されます。帽子はajaxコールで読み取ってチャートを描くことができます。

今すぐ何も返しません。私はデータを内部でハードコードする必要があります:{} ajaxでグラフを描画する。

データこのことにより、動的に選択するには:

// get the select value 
      $(document).ready(function() { 
      // for post-filter 
       $('#post-filter').on('change',function(){ 
       var select1 = $(this).val(); // Post filter value 
       var select2 = $("#field-filter").val(); // Field Filter value 
       $.ajax({ 
         type: 'POST', 
         url: 'ajax.php', 
         data: {selValue1 : select1,selValue2 :select2 }, 
         success: function(result){ 
          console.log(result); 
         } 
        }); 
      }); 



      // field filter value. 
       $('#field-filter').on('change',function(){ 

        var select2 = $(this).val(); // Field filter value 
        var select1 = $("#post-filter").val(); // post Filter value 
        $.ajax({ 
          type: 'POST', 
          url: 'ajax.php', 
          data: {selValue1 : select1,selValue2 :select2 }, 
          success: function(result){ 
           console.log(result); 
          } 
         }); 
        });   
      }); 

これは、結果だけがアヤックスに復帰されていません...選択ボックスをクリックしたときの結果です。どのようなデータの内部を埋める:{} drawitem関数ajax呼び出しに結果を得るには?ヘッダ

enter image description here

データが表示されるが、エラーを持って、チャートがない結果を挿入

enter image description here

エラー。

+0

PHPでJSONに設定されている 'データが選択されています選択ボックスを使って動的に - このコードは何ですか?コードの残りの部分との関係はどこにありますか? –

+0

'console.log(jsonPieChartData);'これの出力は何ですか?また、 'async:false' - メインスレッドの同期XMLHttpRequestは廃止されました - これは最終的には失敗するかもしれませんが、非同期的に操作する方法を学ぶ必要があります –

+0

データを設定しないとコンソールログ出力はnullです:{}内部のハードコード。 – joun

答えて

0

以下の方法を試すことはできますか? Iまた、Content-Typeヘッダを確保することが

var dataVars = {}; 
dataVars['selValue1'] = $("#post-filter").val(); // Post filter value 
dataVars['selValue2'] = $("#field-filter").val(); // Field Filter value 


var jsonPieChartData = $.ajax({ 
       url: "ajax.php", 
       data: JSON.stringify(dataVars) , 
       dataType: "json", 
       async: false 
       }).responseText; 
} 

を働く場合は、ポストフィルタのために複製することができ、フィールド・フィルタの例を示しているが

header('Content-Type: application/json'); 
+0

ヘッダーを挿入する必要がありますか?私はそれがエラー – joun

+0

私は質問に表示されるエラー – joun

+0

あなたはPHPファイル –

関連する問題