【发布时间】:2014-09-29 16:49:42
【问题描述】:
我正在使用 jQuery 验证插件。每,http://jqueryvalidation.org/remote-method,一个回调用于发送额外的数据(即用户名)。
var myObj={
rules: {
email: {
required: true,
email: true,
remote: {
url: "check-email.php",
type: "post",
data: {
username: function() {
return $( "#username" ).val();
}
}
}
}
}
};
$( "#myform" ).validate(myObj);
完美运行!但是现在,我不想硬编码myObj 对象,而是使用PHP 来创建它。请注意,我下面的示例脚本非常简单,并且不涉及验证插件。
这样做的一种方法是直接创建 JavaScript,就像我为 myObj1 所做的那样。但是,有人告诉我,由于安全和故障排除问题,永远不要使用 PHP 动态创建 JavaScript。相反,我应该将 JSON 从服务器传递到客户端。
所以,我尝试为myObj2 这样做,但是,显然 JSON 不能包含 JavaScript,并且它不会解析。
使用 PHP 动态创建 jQuery 验证规则的最佳方法是什么?
<?php
$myID='myID';
if(isset($_GET['task'])) {
header('Content-Type: application/json');
exit("{'data':{'getValue':function() {return $( '#{$myID}' ).val();}}}");
}
else {
?>
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js" type="text/javascript"></script>
<script>
console.log(window,location);
<?php echo("var myObj1={'data':{'getValue':function() {return $( '#{$myID}' ).val();}}}");?>
$(function() {
alert(myObj1.data.getValue());
$.get(location.href+'?task=getJSON',function (myObj2){
alert(myObj2.data.getValue());
},'json');
});
</script>
</head>
<body>
<input id="myID" type="text" value="Hello" />
</body>
</html>
<?php
}
?>
【问题讨论】:
-
我得问问。 为什么你需要使用php来创建这个?从我的角度来看,这没有多大意义。
-
@Ohgodwhy。我有自己的 PHP 类,它在服务器端验证数据。它还能够创建 jQuery 验证插件对象。这样,我就不用维护两套验证脚本了。
-
所以首先使用
echo来构造具有正确值的页面。
标签: javascript php jquery json jquery-validate