我有一个使用外部js文件的php webform
外部文件运行的事件包括:onload,onchange和onSubmit
在我的php应用程序中,我使用以下方法从db中收集了数据:
<?php
$reqFlds = array();
$results = mysql_query("select id, display_name from field where account_id = $acct_id2 and required_flag = 1");
while($RequireResult = mysql_fetch_assoc($results))
{
$reqFlds[] = $RequireResult;
}
foreach($reqFlds as &$reqFld)
{
$reqFld = "'".$reqFld["id"] . "||" . $reqFld["display_name"]."'";
}
?>
然后我使用json收集数据并将其转储到变量中 php应用程序中的js脚本
<script language="javascript">
var holdReqFlds = <?php echo json_encode($reqFlds); ?>;
</script>
var / array结果显示如下 从页面来源查看
<script language="javascript">
var holdReqFlds = ["'15||Project Requested By'","'18||Project Title'","'20||Banner Details'","'202||Flyer Details'","'2134||If Gl Code Not above'","'5862||Quantity'"];
</script>
不可否认,我只是在学习json,所以这是我无法弄清楚的:如何将此值提供给外部js文件中的函数?
以下是javascript函数供参考 - 这将在php应用程序中单击提交按钮时运行。 简而言之 - 我将所有标记为必需的字段传递给holdReqFlds变量。然后将该var传递给下面的chkReq()函数,并确定某个字段是否在当前正在显示的字段集中
我需要将holdReqFlds var传递给外部javascript文件中的chkReq()函数: 如何?
* ###################################
* PAGE ONSUBMIT FUNCTION
* ###################################
function job_onsubmit(action)
{
function isVisible(field) {
if (field.offsetWidth === 0 || field.offsetHeight === 0) return false;
}
function isBlank(field) {
if ((field.type == "text" || field.type == "textarea") && field.value.length <= 0) return true;
if (!(field.checked || field.selected || field.selectedIndex > -1)) return true;
return false;
}
function chkReq(fieldList) {
var field = null;
var blankFields = [];
for (var i = 0; i < fieldList.length; i++) {
listItem = fieldList[i].split;
fieldId = field[0];
label = field[1];
field = document.getElementById(fieldList[i].split("||")[0]);
if (isVisible(field) && isBlank(field)) {
blankFields[blankFields.length] = fieldList[i].split[1];
}
}
if (blankFields.lentgh > 0) {
displayError(blankFields);
return false;
} else {
return true;
}
}
function displayError(blankFields) {
var msg = "Input required:\n\n";
for (var i = 0; i < blankFields.length; i++) {
msg += blankFields[i] + "\n";
}
}
}
答案 0 :(得分:1)
假设holdReqFlds
在全局范围内可用,您可以这样做:
var result = chkReq(holdReqFlds);
另外需要注意的是,您的JSON看起来很奇怪,因为每个值的双引号内都有单引号。将这些值连接在一起的方式似乎很奇怪。你可能最好只是构建实际的对象和JSON编码它们,这样你就不必处理javascript中的任何字符串操作来获取值。尝试这样的事情:
while($RequireResult = mysql_fetch_object($results)) {
$reqFlds[] = $row;
}
$json = json_encode($reqFlds);
这将为您提供一个很好的对象数组,这些对象在javascript中更容易使用。