簡體   English   中英

將JS String轉換為JSON對象

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM