我正在使用jQuery驗證插件。每http://jqueryvalidation.org/remote-method,回調用於發送額外的數據(即用戶名)。使用PHP創建jQuery驗證規則
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 2014-09-29 16:55:07
@Ohgodwhy。我有我自己的PHP類,服務器端驗證數據。它也有能力創建jQuery驗證插件對象。這樣,我不必維護兩套驗證腳本。 – user1032531 2014-09-29 16:56:33
所以,只需使用'echo'首先構建正確值的頁面即可。 – Sparky 2014-09-29 16:58:29