我正在尝试在通过JSON发布的表单的数据库中插入一些数据。插件的一部分工作,但我无法使回调显示“发送消息”之类的内容。我需要调用include各种输入参数。有人可以帮帮我吗?
JSON:
var sendForm= function(_form){
form = _form;
if($('#mensagemCadastroOk').length > 0)
mensagemCadastroOk = form.find('#mensagemCadastroOk').val();
if($('#redirecionar').length > 0)
redirecionar = form.find('#redirecionar').val();
debug('-------------------------');
debug('Cadastrar-lead, enviandoDados:' + enviandoDados);
debug('Validando form:' + form.attr('id'));
enviandoDados = true;
form.find('.mensagem-erro').hide();
labelBotao = form.find('.cadastrar-lead').html();
form.find('.cadastrar-lead').html('Aguarde...');
var erros = 0;
form.find('.requerido').each(function(){
if($(this).val() == ''){
erros++;
$(this).addClass('form-erro');
debug('Erro:' + $(this).attr('id'));
}else{
$(this).removeClass('form-erro');
}
});
form.find('.valida-email').each(function(){
var campos = $(this);
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if(!re.test(campos.val())){
campos.addClass('form-erro');
debug('Erro valida email:' + $(this).attr('id'));
erros++;
}else{
campos.removeClass('form-erro');
}
});
debug('erros:' + erros);
if(erros > 0){
enviandoDados = false;
form.find('.mensagem-erro').html('Preencha todos os campos em vermelho.');
form.find('.mensagem-erro').stop().slideDown();
$('.cadastrar-lead').html(labelBotao);
}else{
var dados = form.serialize();
var camposAdicionais = '';
form.find('.campos-adicionais').each(function(){
if($(this).val() != '')
camposAdicionais += $(this).data('label') + ': ' + $(this).val() + '<br/>';
});
debug('dados:' + dados);
$.ajax({
type: 'GET',
url: url_sistema + "/file.php?"+dados + '&camposAdicionais='+camposAdicionais,
dataType: "jsonp",
async: true,
jsonp: false,
cache: false,
jsonp: "functionName",
contentType: 'application/jsonp',
jsonpCallback: "cadastroCallBack"
});
}
}
JSON回调:
var cadastroCallBack = function(data) {
debug('CallBack');
debug('erro: ' + data['erro'] +' - '+data['mensagem']);
if(data['erro'] == '1'){
form.find('.mensagem-erro').html(data['mensagem']);
form.find('.mensagem-erro').stop().slideDown();
form.find('.cadastrar-lead').html(labelBotao);
enviandoDados = false;
}else if(data['erro'] == '0'){
enviandoDados = false;
form.find('.dados-form').slideUp();
debug('redirecionar:' + redirecionar);
debug('mensagemCadastroOk:' + mensagemCadastroOk);
if(redirecionar != ''){
if(redirecionar.indexOf("?") > 0){
location.href = redirecionar + '&nome=' + data['nome'] + '&email=' + data['email'] + '&telefone=' + data['telefone'];
}else{
location.href = redirecionar + '?nome=' + data['nome'] + '&email=' + data['email'] + '&telefone=' + data['telefone'];
}
}else if(mensagemCadastroOk != ''){
form.find('.mensagem-cadastro').html(mensagemCadastroOk);
form.find('.mensagem-cadastro').slideDown();
$('.mensagem-cadastro').trigger('contentchanged', data);
$('#cadastro').trigger('cadastoOk', data);
}
}
}
PHP:
include_once ('includes/file.php');
header('content-type: application/json; charset=utf-8');
if(!empty($_GET)){
$idForm = 1;
$name = $_GET['name'];
$email = $_GET['email'];
$phone= $_GET['phone'];
$sql = "CALL my_insert(
:form,
:email, :name, :phone, :mess,
:id_ad, :url_origem, :url_conv, :ip, :nav, :nav_ver, :plat, @return_value)";
$dadosBind =
array(
'form' => $idForm,
'email' => $email,
'name' => $name,
'phone' => $phone,
'mess' => NULL,
'id_ad' => $_SESSION["id_ad"],
'url_origem' => $_SESSION["url_origem"],
'url_conv' => $currentUrl,
'ip' => $_SERVER['REMOTE_ADDR'],
'nav' => $browser->getBrowser(),
'nav_ver' => $browser->getVersion(),
'plat' => $browser->getPlatform()
);
if($db->ubQuery($sql, $dadosBind)){
$data = array(
'error' => '0'
);
}else{
$data = array(
'error' => '1'
);
}
echo $_GET['functionName'] . '('.json_encode($data).')';
}