Home > Article > Backend Development > javascript调用php数组变量问题
我在php里面定义的了一个数组, 想在内部的javascript函数中调用, 可是怎么都报错, 求各位大神帮忙看看!感激不尽!
php里面:
<?php$qst=array("R2","R3","R7");$index_qst=3;-----------------------------------$qst[$index_qst]="R1"; $index_qst++; // 动态的统计数组-----------------------------------$str = json_encode($qst); ?>
<script type="text/javascript"> $(document).ready(function(){ $("#send").click(function(){ var empty =0; var nbr_qst = <?php echo "$str";?>; //这一行一直报错 for (var i in nbr_qst) { if (!$("input[name='i']").is(':checked')){ empty=1; }
$(document).ready(function(){ $("#send").click(function(){ var test =0; var empty =0; var str = <br />
我将js里面改用了var str='=$str?>';
var nbr_qst = JSON.parse(str); 突然发现网页代码中间有一堆不知道css... 求指教
$(document).ready(function(){ $("#send").click(function(){ var test =0; var empty =0; var str='<br /><font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'><tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined variable: str in C:\Users\btang\xampp\htdocs\QuestionaireV5\QuestionnaireV5\QuestionnaireV.php on line <i>11</i></th></tr><tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr><tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr><tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0020</td><td bgcolor='#eeeeec' align='right'>160720</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\Users\btang\xampp\htdocs\QuestionaireV5\QuestionnaireV5\QuestionnaireV.php' bgcolor='#eeeeec'>..\QuestionnaireV.php<b>:</b>0</td></tr></table></font>'; var nbr_qst = JSON.parse(str); for (var i in nbr_qst) { if (!$("input[name='i']").is(':checked')){ empty=1; } }
很明显那只是PHP的错误信息:
Notice: Undefined variable: str in C:\Users\btang\xampp\htdocs\QuestionaireV5\QuestionnaireV5\QuestionnaireV.php on line 11
建议你贴出完整的代码。
很明显那只是PHP的错误信息:
Notice: Undefined variable: str in C:\Users\btang\xampp\htdocs\QuestionaireV5\QuestionnaireV5\QuestionnaireV.php on line 11
建议你贴出完整的代码。
<?php include('header.php'); ?><script type="text/javascript"> $(document).ready(function(){ $("#send").click(function(){ var test =0; var empty =0; var nbr_qst = eval(<?=$json_qst;?>); for (var i in nbr_qst) { if (!$("input[name='i']").is(':checked')){ empty=1; } } $("#radio").find("input[type=radio]").each(function(i) { if ($(this).is(':checked') && (!$.trim($("#textare").val()))){ var value = $(this).val(); if (value.indexOf("Non")==0 || value.indexOf("Pas")==0) { test = 1; } } } ); if (empty ==0) { if (test== 0) { $("#radio").submit(); } else{ $( "#dialog-confirm" ).dialog({ resizable: false, height:200, width:400, modal: true, buttons: { "Oui": function() { $( this ).dialog( "close" ); }, Non: function() { $("#radio").submit(); } } }); /*var r = confirm("Etes-vous sûr de vouloir valider votre questionnaire sans commentaires ?"); if (r == true) { $("#radio").submit(); } */ } } else{ $( "#dialog-confirm1" ).dialog({ resizable: false, height:200, width:400, modal: true, buttons: { "Fermer": function() { $(this).dialog("close"); } } }); //alert("Une ou plusieurs réponses sont incomplètes (une puce par question doit-être cochée)"); } }); });// script pr limiter les caractÃ?¨res ds le champ commentairevar ns6=document.getElementById&&!document.allfunction restrictinput(e, theform, maxlength) { if(theform.value.length>=maxlength) { var pressedkey = /[a-zA-Z0-9\.\,\/]/; if (pressedkey.test(String.fromCharCode(e.keyCode))) { if(e.preventDefault) { e.preventDefault(); } e.returnValue = false; return false; } }} function countlimit(e, theform, maxlength, text, text2) { var lengthleft = maxlength - theform.value.length; if (lengthleft <= 1) { caractere = text; } else { caractere = text2; } document.getElementById("limite").innerHTML = '<strong>'+ lengthleft +'</strong> '+ caractere;} function displaylimit(theid, thelimit, text, text2) { var theform = document.getElementById(theid); var limit_text = '<span id=limite><strong>'+thelimit+'</strong> '+ text2 +'</span>'; document.write(limit_text); if (theform.addEventListener) { theform.addEventListener('keypress', function(e) { var that = this; restrictinput(e, that, thelimit); }, true); theform.addEventListener('keyup', function(e) { var that = this; countlimit(e, that, thelimit, text, text2); }, true); } else { theform.onkeypress = function(e) { e = e || window.event; var that = this; return restrictinput(e, that, thelimit); }; theform.onkeyup = function(e) { e = e || window.event; var that = this; countlimit(e, that, thelimit, text, text2); }; }}function displaylimit_rem(theid, thelimit, text, text2) { var theform = document.getElementById(theid); var limit_text = '<span id=limite_rem style="font-size:10px"><strong>'+thelimit+'</strong> '+ text2 +'</span>'; document.write(limit_text); if (theform.addEventListener) { theform.addEventListener('keypress', function(e) { var that = this; restrictinput(e, that, thelimit); }, true); theform.addEventListener('keyup', function(e) { var that = this; countlimit_rem(e, that, thelimit, text, text2); }, true); } else { theform.onkeypress = function(e) { e = e || window.event; var that = this; return restrictinput(e, that, thelimit); }; theform.onkeyup = function(e) { e = e || window.event; var that = this; countlimit_rem(e, that, thelimit, text, text2); }; }}function countlimit_rem(e, theform, maxlength, text, text2) { var lengthleft = maxlength - theform.value.length; if (lengthleft <= 1) { caractere = text; } else { caractere = text2; } document.getElementById("limite_rem").innerHTML = '<strong>'+ lengthleft +'</strong> '+ caractere;} </script><!-- <div id="pre_header"> <div id="header"> <img src="images/logo_bytel.png" border="0" style="max-width:90%" style="max-width:90%" alt="javascript调用php数组变量问题" > <p>ENQUETE DE SATISFACTION</p> </div> </div>--><?phpinclude ('connexion.php');include ('question.class.php');global $connection;$qst=array("R2","R3","R7");$index_qst=3;echo '<div class="site clearfix body">';echo '<form action="enregistrer.php" method=POST id=radio name=form1 class="clearfix" >';$Fixe = filter_input ( INPUT_POST, "idFixe" );$idMobile = filter_input ( INPUT_POST, "idMobile" );$opInstall = filter_input ( INPUT_POST, "opInstall" );$vga = filter_input ( INPUT_POST, "vga" );// echo $vga;// echo $opInstall;$q = new question ();if (isset ( $idMobile )) { echo '<input type=hidden name=ref_clt value=' . $idMobile . '>'; echo '<input type=hidden name=ref_type value="Mobile">';} else if (isset ( $Fixe )) { if (isset ( $opInstall )) { if ($opInstall == 'OUI' || $opInstall == 'oui') { echo '<input type=hidden name=ref_clt value=' . $Fixe . '>'; echo '<input type=hidden name=ref_type value="BboxAvecInstall">'; } else if ($opInstall == 'non' || $opInstall == 'NON') { echo '<input type=HIDDEN name=ref_clt value=' . $Fixe . '>'; echo '<input type=hidden name=ref_type value="BboxSansInstall">'; } } else if (isset ( $vga )) { if ($vga == 'Crea') { echo '<input type=hidden name=ref_clt value=' . $Fixe . '>'; echo '<input type=hidden name=ref_type value="VgaCrea">'; } else if ($vga == 'Repr') { echo '<input type=hidden name=ref_clt value=' . $Fixe . '>'; echo '<input type=hidden name=ref_type value="VgaRepr">'; } } else { echo '<input type="hidden" name="ref_clt" value=' . $Fixe . '>'; echo '<input type="hidden" name="ref_type" value="Fixe">'; }}// echo '<fieldset class=field>';if (isset ( $Fixe ) || isset ( $idMobile )) { if (! isset ( $opInstall )) { echo '<h4 class="qst">Q1 </h4>'; echo '<p class="input_p"><span class="wrapInput"> <input id="Q1_1" name="R1" value="Oui, tout a fait" type="radio" aria-labelledby="radio_1-ariaLabel"/> <label for="Q1_1" id="radio_1-ariaLabel">Oui, tout à fait</label> </span>'; echo '<span class="wrapInput"> <input id="Q1_2" name="R1" value="Non, pas assez" type="radio" aria-labelledby="radio_2-ariaLabel" /> <label for="Q1_2" id="radio_2-ariaLabel">Non, pas assez</label> </span></p>'; echo '</br></br></br>'; echo "<hr></hr>"; $qst[$index_qst]="R1"; $index_qst++; }}// ///////Question2////////echo '<h4 class="qst">Q2</h4>';echo '<p class="input_p" ><span class="wrapInput"> <input id="Q1_1" name="R2" value="Oui" type="radio" aria-labelledby="radio_1-ariaLabel" /><label for="Q1_1" id="radio_1-ariaLabel">Oui</label> </span>';echo '<span class="wrapInput"> <input id="Q1_2" name="R2" value="Non" type="radio" aria-labelledby="radio_2-ariaLabel" /><label for="Q1_2" id="radio_2-ariaLabel">Non</label> </span></p>';echo '</br></br></br>';// ///////Question3////////echo '<h4 class="qst">Q3?</h4>';echo '<p class="input_p"><span class="wrapInput"> <input id="Q1_1" name="R3" value="Oui" type="radio" aria-labelledby="radio_1-ariaLabel" /> <label for="Q1_1" id="radio_1-ariaLabel">Oui</label> </span>';echo '<span class="wrapInput"> <input id="Q1_2" name="R3" value="Non" type="radio" aria-labelledby="radio_2-ariaLabel" /> <label for="Q1_2" id="radio_2-ariaLabel">Non</label> </span></p>';echo '</br></br></br>';echo "<hr></hr>";$json_qst = json_encode($qst); </body></html>
把 换成 =$str?> 出现错误
这表示你的 php 版本低于 5.4 且没有打开短标记功能
你使用了 xdebug 扩展,不会连 xdebug 的报告格式也不知道吧?
不过错误信息的内容与你的描述不一致,不好说什么了
既然你使用了 JQuery,那么就会要使用他的无刷新功能
但是你把 php 动态生成的数据直接嵌入在 js 代码中,这在流程上是不对的
也不能发挥出 JQuery 的性能
把 换成 =$str?> 出现错误
这表示你的 php 版本低于 5.4 且没有打开短标记功能
你使用了 xdebug 扩展,不会连 xdebug 的报告格式也不知道吧?
不过错误信息的内容与你的描述不一致,不好说什么了
既然你使用了 JQuery,那么就会要使用他的无刷新功能
但是你把 php 动态生成的数据直接嵌入在 js 代码中,这在流程上是不对的
也不能发挥出 JQuery 的性能
把 换成 =$str?> 出现错误
这表示你的 php 版本低于 5.4 且没有打开短标记功能
你使用了 xdebug 扩展,不会连 xdebug 的报告格式也不知道吧?
不过错误信息的内容与你的描述不一致,不好说什么了
既然你使用了 JQuery,那么就会要使用他的无刷新功能
但是你把 php 动态生成的数据直接嵌入在 js 代码中,这在流程上是不对的
也不能发挥出 JQuery 的性能
把 换成 =$str?> 出现错误
这表示你的 php 版本低于 5.4 且没有打开短标记功能
你使用了 xdebug 扩展,不会连 xdebug 的报告格式也不知道吧?
不过错误信息的内容与你的描述不一致,不好说什么了
既然你使用了 JQuery,那么就会要使用他的无刷新功能
但是你把 php 动态生成的数据直接嵌入在 js 代码中,这在流程上是不对的
也不能发挥出 JQuery 的性能
是不是JS哪块需要加收一个标签。就好像smarty的literal 标签一样。才能解析。
不行的话 你这样把那个数据放到一个"> 这样。然后在JS中通过DOM元素来获取。
是不是JS哪块需要加收一个标签。就好像smarty的literal 标签一样。才能解析。
不行的话 你这样把那个数据放到一个"> 这样。然后在JS中通过DOM元素来获取。
$json_qst = json_encode($qst);echo '<input type="hidden" name ="json_qst" value="<?php echo $json_qst;?>">';
var nbr_qst = document.getElementByname("json_qst");
是不是JS哪块需要加收一个标签。就好像smarty的literal 标签一样。才能解析。
不行的话 你这样把那个数据放到一个"> 这样。然后在JS中通过DOM元素来获取。
$json_qst = json_encode($qst);echo '<input type="hidden" name ="json_qst" value="<?php echo $json_qst;?>">';
var nbr_qst = document.getElementByname("json_qst");