验证后我有这个submitHandler:
submitHandler: function(form){
var data = $(form).toArray();
var file_data = $('#firma').prop('files')[0];
data.append('firma', file_data);
$.ajax({
url: form.action,
cache: false,
contentType: false,
processData: false,
type: form.method,
data: data,
success: function(response) {
$(".modal-body").html(response)
$("#modalDialog").modal();
}
});
}
这段代码完美无缺,但我的问题是它重定向到处理函数的控制器,将表单数据插入数据库。
我使用此代码获得相同的结果:
submitHandler: function(form){
var data = new FormData();
var file_data = $('#firma').prop('files')[0];
data.append('firma', file_data);
$.ajax({
url: form.action,
cache: false,
contentType: false,
processData: false,
type: form.method,
data: data,
success: function(response,e) {
$(".modal-body").html(response)
$("#modalDialog").modal();
}
});
}
正如您所看到的,我使用新的toArray()
而不是FormData()
函数。此代码不会重定向到控制器,而只是显示正文中添加了HTML的模式,但它只是发送file_data变量。
我尝试更换:
var data = new FormData();
使用:
var data = new FormData($(this)[0]);
这样可以正常工作,但我仍然会重定向到控制器
这是我的控制者:
public function enviarSolicitud(){
//REVISAR SI EL ARCHIVO ES UNA IMAGEN DE CON EXTENSION VALIDA
$allowed = array('gif', 'png', 'jepg', 'jpg');
$filename = $_FILES['firma']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if (!in_array($ext, $allowed)) {
echo "El archivo no es válido, ingresa solamente imágenes";
}else{
//ERROR EN CASO QUE NO SE HAYA SUBIDO O NO SE DETECTE UN ARCHIVO
$path = "admin/assets/global/img/stylos/firmas/";
if (0 < $_FILES['firma']['error']){
echo 'Error: ' . $_FILES['firma']['error'] . '<br>';
}else{
move_uploaded_file($_FILES['firma']['tmp_name'], $path . $_FILES['firma']['name']);
//INSERTAR LA INFORMACION DEL CLIENTE NUEVO EN LA BASE DE DATOS
$data = array(
'nombre' => $this->input->post('nombre'),
'sexo' => $this->input->post('sexo'),
'apellido_paterno' => $this->input->post('apellido_paterno'),
'apellido_materno' => $this->input->post('apellido_materno'),
'calle' => $this->input->post('calle'),
'numero_ext' => $this->input->post('num_exterior'),
'numero_int' => $this->input->post('num_interior'),
'colonia' => $this->input->post('colonia'),
'estado' => $this->input->post('estado'),
'ciudad' => $this->input->post('ciudad'),
'CP' => $this->input->post('c_postal'),
'firma' => $path.$_FILES['firma']['name'],
'tel_casa' => $this->input->post('tel'),
'tel_celular' => $this->input->post('cel'),
'created_at' => date('Y-m-d'),
);
//OBTENER EL NUMERO DE CLIENTE PARA INSERTARLO EN LA TABLA DE AUTORIZACIONES
$num_cliente = $this->CreditosModel->guardarSolicitud($data);
$data = array(
'num_cliente' => $num_cliente,
'tipo' => 'Autorizar Crédito',
'estatus' => 'P',
'fecha_solicitud' => date('Y-m-d h:m:s')
);
$solicitud = $this->CreditosModel->solicitarAutorizacion($data);
echo "La solicitud se ha procesado satisfactoriamente, favor de indicar al cliente que nos pondremos en contacto a la brevedad # de solicitud: <strong>".$solicitud."</strong>";
}
}
}
我想避免重定向,只显示带有echo
字符串的模式。
答案 0 :(得分:1)
您的脚本可能有错误。尝试
import javax.swing.JOptionPane;
public class Password {
public static void main(String[] args){
int tryAgainCount = 0;
while(tryAgainCount < 3) {
tryAgainCount++;
String password = JOptionPane.showInputDialog("Please enter a password: ");
if(isValidPassword(password)) {
JOptionPane.showMessageDialog(null, "Valid Password.");
break;
} else {
JOptionPane.showMessageDialog(null, "Invalid Password. You've tried " + tryAgainCount + " out of 3 times.");
continue;
}
}
JOptionPane.showMessageDialog(null, "Programmed by Alyssa Marquina");
}
public static boolean isValidPassword(String password) {
if (password.length() < 8) {
return false;
} else {
char c;
int count = 0;
for (int i = 0; i < password.length(); i++) {
c = password.charAt(i);
if (!Character.isLetterOrDigit(c)) {
return false;
} else if (Character.isDigit(c)) {
count++;
}
}
if (count < 2) {
return false;
}
}
return true;
}
}