[英]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.