这有效,但是由于缺少真实性令牌而被停止:
$(".ajax-referral").click(function(){ $.ajax({type: "POST", url: $(this).parent("form").attr("action"), dataType: "script"}); return false; });
所以我尝试像这样添加它:
$(".ajax-referral").click(function(){ $.ajax({type: "POST", url: $(this).parent("form").attr("action") + "?&authenticity_token=" + AUTH_TOKEN, dataType: "script"}); return false; });
并且它正确地将auth_token作为参数传递,但似乎丢失了其余的表单。
无论如何要完成发送有效的表单数据以及真实性令牌的工作?
这是一个Rails环境。我脑子里有这个。
= javascript_tag "var AUTH_TOKEN = '#{form_authenticity_token}';" if protect_against_forgery?
我尝试过的事情
1。
= hidden_field :authenticity_token, :value => form_authenticity_token
2。
$.ajax({type: "POST", url: $(this).parent("form").attr("action"), dataType: "script", authenticity_token: AUTH_TOKEN});
3。
// Always send the authenticity_token with ajax $(document).ajaxSend(function(event, request, settings) { if ( settings.type != 'GET' ) { settings.data = (settings.data ? settings.data + "&" : "") + "authenticity_token=" + encodeURIComponent( AUTH_TOKEN ); } });
实际上,您正在读取actionform 的属性并向其发送ajax请求。要发送表单数据,您必须提交表单,也可以序列化表单数据并以ajax请求的形式发送,例如
action
$(".ajax-referral").click(function(){ $.ajax({ type: "POST", url: $(this).parent("form").attr("action") + "?&authenticity_token=" + AUTH_TOKEN, data:$(this).parent("form").serialize(), dataType: "script" }); return false; });
这样做将序列化表单数据并将其与ajax请求一起发送,并且已经通过查询字符串发送了真实性令牌