没有通过ajax请求

时间:2015-09-24 07:22:20

标签: javascript jquery ajax

要通过ajax向php发送值,我在JS中创建了以下函数。

 function sendDataToServer(url,val)
    {
        var html='';
        html +='<div id="fakeDiv">';
        html +='<form action="'+url+'" method="get" enctype="multipart/form-data" id="fakefrm">';
        html +='<input type="hidden" name="jsvar" id="jsvar" value="'+val+'"/>';
        html +='</form>';
        html +='</div>';
        $('body').append(html);
        sendAjaxForm($('#fakeDiv'),function(){return true;},
function(){alert('done');$("#fakeDiv").remove();});
    }

sendAjaxForm

function sendAjaxForm(frm,callbackbefore,callbackdone)
{
    var form = frm;
    form.submit(function(event){
        event.preventDefault();
        var formData = new FormData(form);
        var ajaxReq=$.ajax({
            url: $(this).attr('action'),
            type: $(this).attr('method'),
            data: formData,
            async: false,
            cache: false,
            contentType: false,
            processData: false,
            beforeSend: function(){
                            callbackbefore();
                        }
            });

            ajaxReq.done(function(data){
                callbackdone(data);
            });
    }); // submit done
}

然后在页面上将其称为

sendDataToServer("master.php?action=send_token","23x4dzy009r");

但是没有提出任何请求,如在控制台中看到的那样。甚至没有任何语法错误被识别。这有什么问题?

3 个答案:

答案 0 :(得分:4)

您已将#fakeDiv作为表单传递,实际上应该是#fakefrm

答案 1 :(得分:0)

这是你的罪魁祸首之一:

beforeSend: function(){
  callbackbefore();
}

您不会从beforeSend函数返回任何值,然后将其视为false返回值(或实际为undefined,但这是falsey值)。根据{{​​3}}:

  

false函数中返回beforeSend将取消   请求。

没有理由将callbackbefore包装在另一个函数中。 callbackbefore已经 一个函数,所以只需发送它,不带括号,因为它是:

beforesend: callbackbefore

答案 2 :(得分:0)

此代码不发送请求。 根据您的要求进行更改

&#13;
&#13;
function sendDataToServer(url,val)
    {
        var html='';
        html +='<div id="fakeDiv">';
        html +='<form action="'+url+'" method="post" enctype="multipart/form-data" id="fakefrm">';
        html +='<input type="hidden" name="jsvar" id="jsvar" value="'+val+'"/>';
        html +='</form>';
        html +='</div>';
        $('body').append(html);
        console.log($('#fakefrm'));
        sendAjaxForm($('#fakefrm'),function(){return true;},
function(){alert('done');$("#fakeDiv").remove();});
    }

function sendAjaxForm(frm,callbackbefore,callbackdone)
{
    var form = frm;
    form.submit(function(event){
        event.preventDefault();
        var formData = new FormData(form);
        console.log(formData);
        var ajaxReq=$.ajax({
            url: $(this).attr('action'),
            type: $(this).attr('method'),
            data: formData,
            async: false,
            cache: false,
            contentType: false,
            processData: false,
            beforeSend: function(){
                            callbackbefore();
                        }
            });

            ajaxReq.done(function(data){
                callbackdone(data);
            });
    }); // submit done
    form.submit();
}
sendDataToServer('http://localhost/', 'data');
&#13;
&#13;
&#13;

注意:首先创建处理程序,然后提交表单。