2016-06-28 19 views
0

Ich habe damit eine Weile gekämpft. Es gibt Unmengen von Themen zu dem Thema, aber keine funktioniert tatsächlich für mich, aber ein Neuling könnte die Ursache sein, also bitte erarbeiten.Übergabe von Array von PHP nach jQuery in Wordpress

ich den Code vereinfacht und es wird nicht funktionieren, habe ich geschrieben, den Code unten

ich die Datenbank am queering und Speichern der Werte in ein Array in einer Funktion ich dann dieses Array ein geben müssen jquery in der gleichen Funktion. Früher habe ich json_encode aber ich diese Störung erhalte:

Uncaught SyntaxError: Unexpected token <

Hier ist der Code:

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

Versuchen Sie, Ihre Funktion von Ajax aufzurufen .. dann können Sie Antwort von json_encode in Java-Skript-Funktion erhalten. –

+0

Manchmal ist cut & paste nicht genug eh ?! :) Ändere einfach zu diesem 'var test =" .json_encode ($ PHPArray). ";' – Yuri

+0

Das hat Yuri funktioniert! danke – G1408

Antwort

0

ändern es dazu:

$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

Sie haben Recht, behoben! @eisbehr –

+0

Nein, war ich nicht. Sie können ein JSON-codiertes Array direkt in JS verwenden. Es gibt keine Notwendigkeit für die Zitate. Ich habe den Code falsch gelesen. Mein Fehler. Es tut mir Leid. – eisbehr

+0

Diese Änderung machte einen großen Unterschied! danke – G1408

0

Sie haben Um die Zeichenfolge korrekt zu umgehen:

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

Das hat funktioniert, danke! – G1408

0

Wenn Sie PHP innerhalb JavaScript, um die PHP-Teil setzen ist nur Text, dies tun:

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

Das hat funktioniert! Vielen Dank! – G1408

0

Wenigstens von dem, was gezeigt wird, weder $i noch $PHPArray initialisiert werden. PHP kann an diesen Dingen chaotisch sein, aber Sie können nicht direkt auf Indizes nicht existierender Arrays oder Variablen verweisen, die nicht deklariert wurden.

Ich nehme an, der Token-Fehler wurde von Ihrem Browser versucht, mit der Textausgabe eines PHP-Fehlers umzugehen, der wie 'undefiend' oder 'undefined index' geleert wird.

Auch der wahre (oder zumindest bequeme) Zweck des Foreach-Konstrukts ist nicht mit Indizes täuschen. Versuchen Sie, die folgenden Ersatz für Ihre Stromschleife:

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

Darüber hinaus, „wpdb“ schlägt vor, Anrufe an bestimmte Rahmenbedingungen im Zusammenhang, aber falls dies ist ein mysqli_stmt Anruf, glaube ich, der Anruf singulär ist: get_result.

+0

Das ist eine gute Lektion gelernt! der Code, den andere gepostet haben, hat funktioniert, aber ich habe sichergestellt, dass auch meine Variablen initialisiert werden! Vielen Dank – G1408

Verwandte Themen