( ゜▽゜)/こんばんは!
今日jQueryいじってたら1.3.2で普通に動いてた
「郵便番号から住所を取得して表示する機能」
が何故か動かなくなってましてww
ちょっとハマったのでメモ。
動かなくなったコードはこんなかんじのコード!
返ってくるjsonデータは
{addrjp:'東京都豊島区池袋'}
みたいな感じ。
いままではボタン押すと正常に動いていたんですが
jQuery1.4にしたらうんともすんとも言わなくなっちゃいましたw
FireBugで見ても特にエラーは出ておらず
結局jQuery1.4のソース見ることに。。。。
すると驚きの事実がw
jQuery 1.3.2
jQuery 1.4
ああああああああああ!w
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
if (/^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
.replace(/(?:^|:|,)(?:\s*\[)+/g, "")))
受け取ろうとしたjsonは
{addrjp:'東京都豊島区池袋'}
はいシングルクォート駄目〜
1.4からはシングルクォート付きの
jsonを渡すとjsonだと思ってくれないようです・・・
jsonが不正だとその後のcallbackも呼んでくれないので
結局うんともすんともいわなかったんですね・・・
json渡す方を修正してデータを
{addrjp:"東京都豊島区池袋"}
にしたらうまくいきましたとさ
jQuery入門―魔法のJavaScriptリファレンス&サンプル
著者:高橋 登史朗
販売元:秀和システム
発売日:2009-11
おすすめ度:
クチコミを見る
今日jQueryいじってたら1.3.2で普通に動いてた
「郵便番号から住所を取得して表示する機能」
が何故か動かなくなってましてww
ちょっとハマったのでメモ。
動かなくなったコードはこんなかんじのコード!
$.getJSON( url, function(data){ if(data && data.address){ $('#address').val(data.address); }else{ alert(alertmsg); return; } } );
返ってくるjsonデータは
{addrjp:'東京都豊島区池袋'}
みたいな感じ。
いままではボタン押すと正常に動いていたんですが
jQuery1.4にしたらうんともすんとも言わなくなっちゃいましたw
FireBugで見ても特にエラーは出ておらず
結局jQuery1.4のソース見ることに。。。。
すると驚きの事実がw
jQuery 1.3.2
if ( type == "json" ) data = window["eval"]("(" + data + ")");
jQuery 1.4
if ( type === "json" || !type && ct.indexOf("json") >= 0 ) { // Make sure the incoming data is actual JSON // Logic borrowed from http://json.org/json2.js if (/^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) { // Try to use the native JSON parser first if ( window.JSON && window.JSON.parse ) { data = window.JSON.parse( data ); } else { data = (new Function("return " + data))(); } } else { throw "Invalid JSON: " + data; } // If the type is "script", eval it in global context }
ああああああああああ!w
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
if (/^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
.replace(/(?:^|:|,)(?:\s*\[)+/g, "")))
受け取ろうとしたjsonは
{addrjp:'東京都豊島区池袋'}
はいシングルクォート駄目〜
1.4からはシングルクォート付きの
jsonを渡すとjsonだと思ってくれないようです・・・
jsonが不正だとその後のcallbackも呼んでくれないので
結局うんともすんともいわなかったんですね・・・
json渡す方を修正してデータを
{addrjp:"東京都豊島区池袋"}
にしたらうまくいきましたとさ
jQuery入門―魔法のJavaScriptリファレンス&サンプル
著者:高橋 登史朗
販売元:秀和システム
発売日:2009-11
おすすめ度:
クチコミを見る