Created
December 24, 2011 16:15
-
-
Save pehrlich/1517686 to your computer and use it in GitHub Desktop.
handle json with query mobile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# someday: move to json response module? | |
def json_response(options) | |
logger.warn "JSON response: #{options}" | |
render json: options | |
end | |
def json_callback(method, args = []) | |
json_response({status: :window_callback, method: method, args: args}) | |
end | |
def json_target_callback(method, args = []) | |
json_response({status: :target_callback, method: method, args: args}) | |
end | |
def json_error(message = '') | |
# todo: automatically email me | |
json_response({status: :error, message: message}) | |
end | |
def json_ok(message = '') | |
json_response({status: :ok, message: message}) | |
end | |
def json_dialog_close | |
json_callback(:close_dialog) | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# handle json response data | |
$(document).bind "pageload", ( e, data ) -> | |
# page is already in dom here. someday: prevent json pages form being added? | |
console.log 'pageload', e, data | |
if data.xhr.getResponseHeader('Content-Type').search(/application\/json/) != -1 # "application/json; charset=utf-8" | |
# remove bunk page from dom (for anti-caching reasons) | |
data.page.remove() | |
data.json = $.parseJSON(data.xhr.responseText) | |
$(this).trigger('pageloadjson', data) | |
data.deferred.reject(data.absUrl, data.options) | |
return false | |
# someday: handle json form validation | |
$(document).bind "pageloadjson", (e, data) -> | |
# todo: diable page chaching | |
console.log(e, data) | |
status = data.json.status | |
switch status | |
when 'window_callback' then window[data.json.method].apply(window, data.json.args) | |
# when 'target_callback' then $(e.target)[data.json.method].apply($(e.target), data.json.args) | |
when 'target_callback' | |
$target = $("[href='#{data.dataUrl}']") | |
$target[data.json.method].apply($target, data.json.args) | |
# because of jqm pos, e.target is not set right. | |
when 'ok' then p data.json.message | |
else p "#{data.json.status} - #{data.json.message}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment