[英]Converting JS String to JSON object
我正在尝试使用验证插件动态构建一个远程验证器函数。 但由于某种原因,它没有将JS转换为对象,而是将其视为字符串并嵌入双引号。
例如:
我的PHP代码是:
$remoteUrl = '/test/checkusername';
$remoteValidatorJs = "{url: '". $remoteUrl . "',
type: 'post',
async:false,
dataType: 'html',
beforeSend: function(){
alert('Validating Form Field');
},
complete: function(){
alert('Completed Validation of Form Field');
},
dataFilter: function(html) {
return html;
}
}";
$validation[ 'rules' ][ 'Name' ][ 'remote' ] = $remoteValidatorJs;
如何在$remoteValidatorJs
变量中构造或转换JS,这样,当打印数组时,它最终看起来像下面“远程”部分中的内容:
$("#testForm").validate( {
"rules":{
"Name":{
"remote":{
url: '/test/checkusername',
type: 'post',
async:false,
dataType: 'html',
beforeSend: function(){
alert('Validating Form Field');
},complete: function(){
alert('Completed Validation of Form Field');
},
dataFilter: function(html) {
return html;
}
}
}
}
} );
谢谢,
JSON是javascript的一个子集,您的示例不是有效的JSON,因为它是一个javascript字符串。
评估它的唯一方法是使用Function或eval
但是,如果不知道你想要解决什么,我怀疑是否正在评估一个字符串是解决方案。
使用包含带有函数的javascript对象文字的字符串,以下内容将起作用。 PS我没用过你的整个字符串:)
var remoteUrl = "http://something.com";
var evalString =
[
'{url:"' + remoteUrl + '",',
'type:"post",',
'async:false}'
].join('')
evalString #// => "{url:"http://something.com",type:"post",async:false}"
var x= new Function("return " + evalString + ";")()
#// => Object
async: false
type: "post"
url: "http://something.com"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.