2016-06-28 12 views
0

私はしばらくこのことに苦労しています。テーマにはたくさんのトピックがありますが、実際には私のために働いているものはありませんが、初心者になることが原因である可能性がありますので、詳細を教えてください。ワードプレスのPHPからjQueryへの配列の受け渡し

は、私は、コードを簡素化し、それが動作しません、私は、その後にその配列を渡す必要がデータベースをqueering、および機能 に配列に値を保存しています

以下のコードを掲載しました同じ関数内のjquery。私は、json_encodeを使用しますが、私はこのエラーを取得しています。これに

function Test() 
{ 
    $query1 = $wpdb->get_results("SELECT(element_value) FROM wp_piic_formmaker_submits WHERE form_id = 13 AND element_label = 1 AND user_id_wd = 1 ORDER BY date asc", OBJECT); 

    if($query1) 
    { 
     foreach($query1 as $q) 
     { 
      $PHPArray[$i] = $q->element_value ; 
      $i = $i + 1; 
     } 
    } 

    $UserInput = "<script type='text/javascript'> 
    jQuery('#wdform_1_element13').on('change',function() 
    { 
     var test = <?php echo json_encode($PHPArray); ?>; 
     jQuery.each(test , function (i, elem) 
     { 
      alert('here'); 
     }); 
    }); 
    </script>"; 

    return $UserInput ; 
} 
+0

あなたはJavaスクリプト機能にjson_encodeの応答を取得することができます..thenアヤックスから、あなたの関数を呼び出すようにしてください。 –

+0

カット&ペーストで十分でない場合がありますか? :)この 'var test =" .json_encode($ PHPArray)に変更するだけです。 "; ' – Yuri

+0

それはYuriを働かせました!ありがとうございます – G1408

答えて

0

変更して:あなたが持っている

$UserInput = "<script type='text/javascript'> 
jQuery('#wdform_1_element13').on('change',function() 
{ 
    var test = ".json_encode($PHPArray)."; //Notice the change here 
    jQuery.each(test , function (i, elem) 
    { 
     alert('here'); 
    }); 
}); 
</script>"; 

return $UserInput ; 

}

+0

あなたは正しいです、修正されました! @eisbehr –

+0

いいえ、私はそうではありませんでした。 JSでエンコードされた配列をJSで直接使用することができます。引用符の必要はありません。私は間違ったコードを読んでいた。私のせい。ごめんなさい。 – eisbehr

+0

その変更は大きな違いをもたらしました!ありがとうございました – G1408

0

ここ

Uncaught SyntaxError: Unexpected token <

コードです文字列を正しくエスケープする:

function Test() 
{ 
    $query1 = $wpdb->get_results("SELECT(element_value) FROM wp_piic_formmaker_submits WHERE form_id = 13 AND element_label = 1 AND user_id_wd = 1 ORDER BY date asc", OBJECT); 

    if($query1) 
    { 
     foreach($query1 as $q) 
     { 
      $PHPArray[$i] = $q->element_value ; 
      $i = $i + 1; 
     } 
    } 

    $UserInput = "<script type='text/javascript'> 
    jQuery('#wdform_1_element13').on('change',function() 
    { 
     var test = " . json_encode($PHPArray) . "; 
     jQuery.each(test , function (i, elem) 
     { 
      alert('here'); 
     }); 
    }); 
    </script>"; 

    return $UserInput ; 
} 
+0

それは働いて、ありがとう! – G1408

0

あなたがPHPの一部はテキストだけではJavaScript内でPHPを置く場合は、次の操作を行います。

function Test() 
{ 
    $query1 = $wpdb->get_results("SELECT(element_value) FROM wp_piic_formmaker_submits WHERE form_id = 13 AND element_label = 1 AND user_id_wd = 1 ORDER BY date asc", OBJECT); 

    if($query1) 
    { 
     foreach($query1 as $q) 
     { 
      $PHPArray[$i] = $q->element_value ; 
      $i = $i + 1; 
     } 
    } 

    $UserInput = "<script type='text/javascript'> 
    jQuery('#wdform_1_element13').on('change',function() 
    { 
     var test = " . json_encode($PHPArray) . "; 
     jQuery.each(test , function (i, elem) 
     { 
      alert('here'); 
     }); 
    }); 
    </script>"; 

    return $UserInput ; 
} 
+0

それはうまくいった!ありがとうございました! – G1408

0

少なくとも示されているものから、$i$PHPArrayどちらも初期化されます。 PHPではこれらのことが面倒かもしれませんが、存在しない配列や宣言されていない変数のインデックスを直接参照することはできません。

私は、トークンエラーが「undefiend」かのラインに沿って、フラッシュされPHPエラーのテキスト出力に対処しようとしているブラウザからだったと思います「未定義のインデックス」。

また、実際の(または少なくとも便利な)foreach構造の目的は、インデックスを欺くことではありません。あなたの現在のループの次の代替試してみてください。それを超えて

$PHPArray = array(); // $PHPArray = []; 
if($query1){  
    foreach($query1 as $q){ 
     $PHPArray[] = $q->element_value; 
    } 
} 

を、「wpdb」は、特定のフレームワークに関連する通話を示唆してますが、場合には、これはmysqli_stmtコールで、私は、コールが特異であると信じて:get_result

+0

これは良いレッスンです!他のコードが投稿されましたが、私も変数を初期化しました!ありがとう – G1408

関連する問題