<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>
我有上面的脚本跨域查询并在窗体中发布数据的脚本。
一切似乎工作正常。 JSON响应可以在萤幕控制台中看到。我想要处理响应并相应地向用户显示状态消息。我应该如何实现它?阅读跨域JSON响应
UPDATE
我曾尝试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应用程序
下面是一个JSONP调用的实例:http://jsbin.com/otehi4 –
我已经尝试过几乎所有的东西,但还没有运气。通过努力更新了问题 – Pravin
@Pravin:您仍然在处理函数名称('success:handleSuccess()')之后放置'()'。正如我在上面的回答中所说的那样,*立即(在ajax调用之前)调用你的'handleSuccess'函数,并将其返回值赋给'success'选项到'ajax'。要在不调用函数的情况下引用某个函数,可以关闭'()'(例如'success:handleSuccess')。 –