回覆列表
  • 1 # 使用者3456175603979

    你這裡的jsonstr本身就已經是物件了,而json只是字串,也就是說對方傳遞過來的字串而已。

    應該寫成

    var jsonStr = "{qiyi:"mp4",tudou:"3gp",youku:"mp4"}";

    這樣可以表示jsonStr是一個字串,而現在要jsonStr去執行一下就可以了!

    如:

    var c = eval(jsonStr);

    然後就可以呼叫了!如c.qiyi等等。不過這裡不太好理解的,eval就是將jsonStr字串當指令執行了,將執行結果傳遞給c而已。換一句方式可能會更好的理解的!

    eval(" var c = "+jsonStr+";");

    也就是說重新組合一個語句,這樣可以直接使用c.qiyi了!

    但其實是一樣的道理的,只不過很少人會用到第二種!因為如果eval沒有順利執行時,第二種會出現錯誤,而第一種則會出現undefined的結果,第一種與第二種的區別就是不管是否空值,第一種c物件是存在的!而第二種卻未必見得!第二種方案下,執行了一個語句,然後就感覺“憑空”開始使用一個物件了!然後這樣雖是不好,其中是說明下邊的語句都依賴於eval這樣的一個細節語句,所以不是很多的!

    也就是說:

    var c = eval("{qiyi:"mp4",tudou:"3gp",youku:"mp4"}");

    就是將json執行後的結果。由此可以看出你對資料傳遞上還有些不理解的!

  • 中秋節和大豐收的關聯?
  • 吃了大蒜怎麼去除味道?