1

基本上,我有一个应用程序来创建包含与之关联的项目的列表。我正在尝试使我的应用程序接受带有书签的跨域帖子,以从我访问的任何网站创建项目。我是 Rails 和 jQuery 的新手,因此将不胜感激任何帮助!

现在,我第一次按书签时收到 200 OK 回复。第二次,我收到 304 错误。但是,不会创建任何项目。

items_controller.rb

def create
    @list = current_user.lists.find(params[:list_id])
    @item = Item.create!(params[:item])
    @item.wishes.build(list_id: @list.id)
    if @item.save
        flash[:success] = "Item created!"
        redirect_to @item
    else
        render 'new'
    end
end

书签.js

alert('Loaded');

document.write('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>');


(function($)
{

    alert( $('title').text() );

var dataObj = {
    'remote_image_url': "http://developer.android.com/assets/images/dac_logo.png",  
    'title':    $('title').text(),
    'link': "http://omfg.dk",
    'list_id':  5,
    'commit':   "Add wish"
};

$.ajaxSetup({
  type: "POST",
  // contentType: "application/json; charset=utf-8",
    xhrFields: {
    withCredentials: true
    },
  crossDomain: true
});

$.post('http://localhost:3000/items', dataObj, function(data)
{
    //alert('ADDED!!!');
});


}(jQuery));

书签

javascript:(function()%7Bvar%20script=document.createElement('SCRIPT');script.src='http://localhost:3000/assets/bookmarklet.js';document.body.appendChild(script);%7D)()

此外,我rack/cors安装并设置了 gem,如下所示:

config.middleware.use Rack::Cors do
   allow do
      origins '*'
      resource '*',
        :headers => :any,
        :methods => [:get, :put, :delete]
   end
end
4

1 回答 1

0

304 不是错误,它表示资源已缓存且未修改。有几种方法可以解决此问题:

  1. 修改您的 Web 服务器实现以不缓存并始终返回 200。
  2. 将随机字符串附加到 url 的末尾,使其不被缓存。这是一个示例:如何使用 jquery 生成和附加随机字符串
于 2013-05-09T17:23:55.117 回答