我遇到了ajax方法的问题。我有一个包含两个字段的表单,电子邮件和密码。当我使用标签" a"使用id = registroAction,我调用ajax方法并跳转到其他地方。
我的代码:
<form id="form-registro" class="margen-left-445 absoluto margen-top-40 azul-corporativo">
<p class="bg-success espaciointerior-10 mensaje_activacion" style="display:none"></p>
<p class="bg-danger espaciointerior-10 mensaje_activacion" style="display:none"></p>
<h3 style="text-align: center; color: #044E7C;">Registrate gratis</h3>
<div class="input-group">
<input type="text" id="email" class="input-generico margen-top-10 margen-bottom-5" placeholder="Email" aria-describedby="basic-addon2">
</div>
<div class="input-group">
<input type="password" id="password" class="input-generico margen-top-10 margen-bottom-5" placeholder="Contraseña" aria-describedby="basic-addon2">
</div>
<div class="input-group margen-bottom-20">
<input type="password" class="input-generico margen-top-10 margen-bottom-5" placeholder="Repita contraseña" aria-describedby="basic-addon2">
</div>
<a id="registroAction" class="btn boton-generico margen-left-38">Crear una cuenta gratis</a>
<a href="<?php echo base_url(); ?>" class="btn boton-generico">Cancelar</a>
</form>
Jquery的:
<script type="text/javascript">
$(function() {
$("#registroAction").on("click", function(e){
$.ajax({
url: '<?php echo base_url(); ?>frontend/registro/registrarAction',
type: 'POST',
dataType: 'json',
data: {email: $('#email').val(), password: $('#password').val()},
success: function (response) {
if ( response.ok == 'ok' ){
// Establecemos la clase necesario para mostrar el mensaje
var classname = ( response.ok == 'ok' ) ? '.bg-success' : '.bg-danger';
// Ocultamos el resto de mensajes de activacion
$('.mensaje_activacion').hide().html('');
// Mostramos y rellenamos según si ha salido bien o mal
$('.mensaje_activacion' + classname).html(response.responseText).show().fadeOut( 3000 );
} else {
$(location).attr('href',response.url);
}
},
error: function(estado){
console.log(estado)
}
});
});
});
答案 0 :(得分:0)
首先,您的代码应具有href属性。您可以使用href =&#34;#&#34;。 关于您的问题,您需要告诉浏览器忽略默认行为(以下链接):
$("#registroAction").on("click", function(e) {
e.preventDefault();
....
}
这应该有效,并防止你看到的奇怪行为!
答案 1 :(得分:-1)
这是因为相同的源策略或您的URL可能在服务器端具有重定向。请参阅此How to call external url in jquery?