[EDIT已解决]我解决了这个问题,这是一个与远程宝石有关的问题。我使用了以下链接:https://github.com/JangoSteve/remotipart/issues/77#issuecomment-20843889
我的控制器中有这部分代码:
if @contract.update_attributes(contract_params)
Rails.logger.info("Contratto aggiornato con successo")
respond_to do |format|
format.js {render partial: 'contracts/success', status: 200}
end
else
@errors=@contract.errors
respond_to do |format|
# format.js { render 'strutturas/edit' }
format.js {render partial: '/pages/shared/form_error', status: :unprocessable_entity, :locals => { :errors => @errors }}
end
Rails.logger.error("Problema nel salvataggio del contratto")
end
这是javascript:
$(document).on('ajax:error', '#upload_contract', function(evt, xhr, status, error) {
$("#form_error").html(xhr.responseText);
console.log("Errore");
console.log(xhr);
});
$(document).on('ajax:success', '#upload_contract', function(evt, xhr, status, error){
$("#contract_space").html(xhr.responseText);
console.log(xhr);
console.log(evt);
});
如果update_attributes失败没问题,javascript将xhr作为对象,我可以使用xhr.responseText显示消息。
我不明白为什么在ajax成功的情况下xhr是一个字符串而不是一个对象所以xhr.responseText是未定义的。
对我而言,这两种情况是相同的,无法理解为什么他们在做不同的事情。
问题显然是在成功的情况下,因为错误案例正在发挥作用。
这是xhr的对数(应该是一个对象):
<head><script type="text/javascript">try{window.parent.document;}catch(err){document.domain=document.domain;}</script> </head><body><textarea data-type="text/javascript" data-status="200" data-statustext="OK"><div class='col-md-10 col-md-offset-1'>
<div class='spacer30'></div>
<div class='alert alert-success'>
<strong>
Il contratto è stato caricato con successo. I nostri operatori invieranno via email le credenziali di accesso una volta verificato il documento allegato. Per qualsiasi dubbio può contattare l'assistenza SHB via email:
<a href='mailto:info@shbooking.com'>info@shbooking.com</a>
</strong>
</div>
</div>
<spacer50></spacer50>
</textarea></body>
答案 0 :(得分:0)
我想你希望$(document).on('ajax:success', '#upload_contract', function(evt, data, status, xhr){
$("#contract_space").html(data);
console.log(data);
console.log(evt);
});
看起来更像:
data
其中Device.OpenUri(new Uri("tel:528331607211"));
将是呈现部分的HTML。