夜鸣猪 发表于 2013-1-29 10:34:52

一个ajax和rails交互的例子

首先,这里用了一个,query信息解析的包,如下
https://github.com/rapportive-oss/jquery-parsequery
主要做如下:
$.parseQuery({query: "id[]=1&id[]=2",    array_keys: /^ids$/,    decode: function (input, context) {      input = this.default_decode(input);      if (context === null) {            return input.replace(/\[\]$/, 's')      } else if (context === "ids") {            input = parseInt(input);            if (isNaN(input)) {                throw URIError("id was not a number");            }      }      return input;    }}) == {'ids':}

例子,正式触发

// If direct link to property query is used send to Railstry {var hash = location.hash.substr(1, location.hash.length);if (location.pathname == '/properties' && hash.length > 0) {    $.parseQuery.separator = ',';    var data = $.parseQuery(hash);    $.ajax({      url      : '/properties',      type   : 'GET',      data   : data,      dataType : 'script'    });}} catch(err) { }
服务器端

# app/controllers/application_controller.rbhelper_method :params_to_urldef params_to_urlrails_params = [    'action',   'controller',   'commit', '_',   'authenticity_token',   '_method',   'format',   'utf8']params_copy = params.dupparams_copy.map {    |k,v| "#{k}=#{URI.escape(v.to_s)}" if !v.empty? && !rails_params.include?(k)    }.compact.join(',')end





# app/views/properties/index.js.erb<%- if @properties.size > 0 -%># For example, update DIV with found propertieswindow.location.hash = '<%= params_to_url %>';<%- end -%>
页: [1]
查看完整版本: 一个ajax和rails交互的例子