要通过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");
但是没有提出任何请求,如在控制台中看到的那样。甚至没有任何语法错误被识别。这有什么问题?
答案 0 :(得分:4)
您已将#fakeDiv
作为表单传递,实际上应该是#fakefrm
。
答案 1 :(得分:0)
这是你的罪魁祸首之一:
beforeSend: function(){
callbackbefore();
}
您不会从beforeSend函数返回任何值,然后将其视为false
返回值(或实际为undefined
,但这是falsey值)。根据{{3}}:
在
false
函数中返回beforeSend
将取消 请求。
没有理由将callbackbefore
包装在另一个函数中。 callbackbefore
已经 一个函数,所以只需发送它,不带括号,因为它是:
beforesend: callbackbefore
答案 2 :(得分:0)
此代码不发送请求。 根据您的要求进行更改
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;
注意:首先创建处理程序,然后提交表单。