JSON のみを生成するようにページを変更します。
{"groups":["1210103","1210103","1210103","1210405"],
"prices":["279,00","399,00","628,00","129,00"],
"titles":["","","",""]
}
JSON では、文字列の引用には ではなくを使用する必要があることに注意してください。"
'
Content-Type
のヘッダーを返すようにしapplication/json
ます。なんらかの理由で応答に正しいヘッダーを設定できない場合は、呼び出しに追加するContent-Type
ことで、jQuery に強制的に応答を JSON として処理させることができますが、正しい.dataType: 'json'
ajax
content-Type
次に、ajax
呼び出しのsuccess
コールバックでは、3 つのプロパティ ( 、、 ) を持つ逆シリアル化されたオブジェクトresult
が既に存在します。これは、操作できる JavaScript 配列になります。groups
prices
titles
実例| ソース
以下のコメントで、このページはタグが埋め込まれた完全な HTML ページであり、使用している CMS が原因でscript
、タグのコンテンツ以外は制御できないと述べています。script
より柔軟な CMS に移行することを強くお勧めします。
それができるまで/できない場合は、ページをテキストとして受け取り、JSON を抽出するだけです。script
タグを次のように変更します。
<script>
var JSONObject = /*XXX_JSONSTART_XXX*/{"groups":["1210103","1210103","1210103","1210405"],
"prices":["279,00","399,00","628,00","129,00"],
"titles":["","","",""]
}/*XXX_JSONEND_XXX*/;
</script>
マーカーに注意してください。次に、マーカー間の JSON を抽出して使用できます$.parseJSON
。例:
(function($) {
$.ajax({
url: "http://jsbin.com/ecolok/1",
dataType: "text",
success: function(result) {
var startMarker = "/*XXX_JSONSTART_XXX*/";
var endMarker = "/*XXX_JSONEND_XXX*/";
var start, end;
start = result.indexOf(startMarker);
if (start === -1) {
display("Start marker missing");
}
else {
start += startMarker.length;
end = result.indexOf(endMarker, start);
if (end === -1) {
display("End marker missing");
}
else {
result = $.parseJSON(result.substring(start, end));
display("result.groups.length = " + result.groups.length);
display("result.prices.length = " + result.prices.length);
display("result.titles.length = " + result.titles.length);
}
}
}
});
function display(msg) {
$("<p>").html(String(msg)).appendTo(document.body);
}
})(jQuery);
ライブコピー| ソース