Access-Control-Allow-OriginでJQueryからJSONが読み込めない場合

 プログラミング  Comments Off on Access-Control-Allow-OriginでJQueryからJSONが読み込めない場合
Jul 132013
 

JQueryからJSONを読み込む時にエラーが起きて読み込めない場合の対処法。Access-Control-Allow-Originによるエラーの場合クロスドメインが原因。サーバサイドにヘッダー出力を一つ追加して解決。

JSONをサーバから読み込めない場合の対処法

  • エラーログを出す
  • エラーを特定する
  • Access-Control-Allow-Originの場合は以下の方法で直す

PHPの場合

サーバサイドにヘッダー出力(‘Access-Control-Allow-Origin: *’)を追加。

<?php
header('Access-Control-Allow-Origin: *');
//SQL取得
//json生成
//json出力
echo $json;
?>

異なるドメイン間で読み込もうとするとエラーになる。

url = "http://another.domain/fetch_json.php"
$.getJSON(url, null, (data)=>

	console.log data;

)

参考サイト
http://stackoverflow.com/questions/17160071/xmlhttprequest-cannot-load-is-not-allowed-by-access-control-allow-origin

 Posted by at 12:54

Coffeescriptでクラス毎にファイル分割

 プログラミング  Comments Off on Coffeescriptでクラス毎にファイル分割
Jul 072013
 

Coffeescriptでクラスを書く場合にファイル毎にクラスやモジュールを分ける場合はクラス名にwindowを付けるのが簡単。

coffeescriptのファイル分割

通常はファイル分割すると、生成されるjsファイル外の別のクラスにアクセス出来ない。

サンプル

dao.coffee(dao.js)


class window.DAO
	serviceUrl : ""
	constructor : (url) ->
		@serviceUrl = url
	loadMe : (me) ->
		console.log me

生成されたクラス名のプロパティの前にwindowが付くのでファイル間を超えてアクセス出来るようになる。

(function() {

  window.DAO = (function() {

    DAO.prototype.serviceUrl = "";

init.coffee(init.js)

$ ->
	dao = new DAO("http://dao.dao/dao")
	dao.load("1234")

今回は珍しくXcodeでなくWebネタ。Webの場合はCodekit+Sass+Coffeescript+kitが楽。エディタはSublimeText2。完璧なエディタには未だ出会った事が無い…。

参考サイト

http://www.stakelon.com/2011/12/coffeescript-organizing-classes-in-separate-files/

 Posted by at 19:45