将PHP数组发送到Javascript
Sending PHP array to Javascript
我用PHP创建了一个数组。我需要将该数组转换为javascript函数。这就是我尝试过的。
$sql = "SELECT * FROM Questions WHERE Form_ID='$FormID' AND QuestionsDataHave='YES' ORDER BY Questions_ID+0, Questions_ID";
$GetTheValidationRule = mysqli_query($con, $sql);
$ValidatinArray = array();
$J = 0;
while($RowVal = mysqli_fetch_array($GetTheValidationRule)){
$ValidatinArray[$J] = $RowVal['Validation_Type'];
$J++;
}
这是我的javascript代码。
$(document).ready(function() {
$("form").submit(function(){
var P= <?php echo json_encode($ValidatinArray); ?>;
var O = P.length;
alert(O);
return false;
});
});
但这给了我一个类似的错误
SyntaxError: syntax error
var P= <br />
难道不可能用这种方式得到数组吗。请有人帮我。
更新:这是我的错误消息的最后输出
<script>
$(document).ready(function() {
$("form").submit(function(){
alert('AAAAAAAAAAAAAAAAAAA');
var IDsOfTheColumns = document.getElementsByName("DataColumnID[]");
var Data = document.getElementsByName("DataInputValue[]");
var A = IDsOfTheColumns.length;
alert(A);
<br />
<b>Notice</b>: Undefined variable: ValidatinArray in <b>C:'xampp'htdocs'PHIS'CreateTheForm.php</b> on line <b>16</b><br />
var P = null; return false;
});
});
</script>
很抱歉延迟响应。。。尝试重写文档。准备为:
$(document).ready(function() {
$("form").submit(function(){
var P = JSON.parse('<?php echo json_encode($ValidatinArray); ?>');
var O = P.length;
alert(O);
return false;
});
});
问题是,在打印javascript代码的文件中,变量$ValidatinArray
不可用。也许这个手册页对你有帮助:
http://www.php.net/manual/en/language.variables.scope.php
试试这个:
<?php
echo ' <script>
$(document).ready(function() {
$("form").submit(function(){
var P= '. json_encode($ValidatinArray) . ';
var O=P.length;
alert(O);
return false;
});
});
</script>';
?>
您所做的只是使用php简单地回显js。
您的标记来自您提交的表单。在对表单数据进行编码以验证输出之前,请检查表单数据是什么。您可以使用console.log($("表单");
此外,使用表单也不是一个好主意,因为如果您有多个表单,并且表单是一个全局名称。对于表单,你应该给它一个唯一的表单名称,比如"myForm",这样你就可以针对特定的表单
希望这能帮助
首先,我建议您验证变量$ValidatinArray
是否存在,以及它是否被正确地传递到您正在执行"回声";。
您显示的错误表明从一开始就不存在包含数组的变量。如果SQL查询在php函数内,请检查是否返回了变量。示例
<?php
function GetData(){
// ... here is the code to get the information from the database ...
return $ValidatinArray;
}
$ValidatinArray = GetData();
?>
一旦您验证了这个数组的存在,我们现在可以看到将数据传递到JavaScript:的问题
这完全取决于结构如何,如果你在同一个文件中有PHP代码和JavaScript函数,你可以简单地在PHP-fil:中使用这个方法
// ... php file code
?>
<script>
$(document).ready(function() {
$("form").submit(function(){
// you can use any of the two methods that I leave you here
// Using only json_enconde
var P= <?= json_encode($ValidatinArray) ?>;
// Using json_enconde to pass the array as a string and using JSON.parse to have JavaScript convert it to an object
var P= JSON.parse('<?= json_encode($ValidatinArray) ?>');
var O = P.length;
alert(O);
return false;
});
});
</script>
如果php文件在打开页面时执行,并且包含JavaScript函数的文件在另一个文件中:
您可以生成一个";全局";php代码中的JavaScript变量如下
// ... code php file
?>
<script>
window.variablename = <?= json_encode($ValidatinArray) ?>
</script>
<?php
在你的JS文件中,你可以收到像这样的数组
$(document).ready(function() {
$("form").submit(function(){
var P= window.variablename ;
var O = P.length;
alert(O);
return false;
});
});
PD:使用<?=相当于使用回波
在php中json_encode数组如下:
$inlinejs='';
$inlinejs.='var validatinArray='''.addslashes(json_encode($ValidatinArray)).''';'."'n";
$inlinejs.='var validatinArray=eval(''('' + validatinArray + '')'');'."'n";
和javascript:
$(document).ready(function() {
$("form").submit(function(){
<?php echo $inlinejs; ?>
console.log(validatinArray);
});
});
- AJAX Post的奇怪Javascript/PHP行为
- 带有输入参数的Javascript/PHP中的XMLHTTPrequests
- 用Javascript/PHP创建字典
- 如何记录用户'使用Javascript/PHP的语音
- fetch data from db using javascript & php
- onClick按钮不工作javascript/php/jquery mobile
- 通过Javascript(PHP循环)添加类
- Javascript php onclick
- Interfacing html, javascript, php and mysql
- Javascript/PHP Validation
- JavaScript/PHP 刷新取代了 HTML 元素类
- Cross-domain javascript <-> php
- 设置计时器并使用javascript/PHP进行检查
- Javascript/Php聊天-输入is'不能在一个文本框中工作
- AJAX (JavaScript / PHP), FormData not sending
- Javascript/PHP中的HTML转义/编码
- 我想在Iframe Javascript PHP的帮助下,将单个ajax上传器脚本转换为多个上传器
- javascript/php中的批量打印
- Javascript/PHP,使用文本文件作为数据库,并将内容组织到阵列表中
- JavaScript/PHP函数不会发布到其他页面