【发布时间】:2011-07-16 14:17:35
【问题描述】:
<script>
$.ajaxSetup( {contentType: 'application/json'} );
function submit_data(f){
alert('submitting')
var data_string = $(f).serialize();
$.ajax({
url: "http://localhost:3000/application/1/contact_us.json?jsonpcallback=?"+data_string,
dataType: "jsonp",
type : 'post',
processData: false,
crossDomain: true,
contentType: "application/json",
jsonp: false,
jsonpcallback: result()
});
}
function result(){
alert('back in')
alert(data)
}
function jsonp1300279694167(){
alert('dhoom')
}
</script>
我有上面的脚本跨域查询并在表单中发布数据。
一切似乎都很好。可以在 firebug 控制台中看到 JSON 响应。我想处理响应并相应地向用户显示状态消息。我应该如何实现它?
更新
我已按照 T.J. 的建议尝试过。 Crowder 但还没有运气。修改后的代码如下
function submit_data(f){
alert('submitting')
var data_string = $(f).serialize();
$.ajax({
url: "http://localhost:3000/application/1/contact_us.json?"+data_string,
dataType: "jsonp",
crossDomain: true,
success: handleSuccess()
});
}
function handleSuccess(data) {
alert("Call completed successfully");
alert(data);
}
这不会访问data 和警报undefined。如果我尝试从 success: handleSuccess() 传递它,它会出错并使用 http 请求重定向。
我收到了来自Ruby on Rails 应用程序的回复。这是我正在使用的方法
def create
errors = ContactUsForm.validate_fields(params)
logger.info errors.inspect
if errors.blank?
respond_to do |format|
format.json {render :json => {:status => 'success'}.to_json}
end
else
respond_to do |format|
format.json {render :json => {:status => 'failure', :errors => errors}.to_json}
end
end
end
我需要在我的 Rails 应用程序中配置什么
【问题讨论】:
标签: ruby-on-rails json jquery jsonp