当我通过Ajax向PHP脚本提交联系表单时,我遇到了问题。我之前使用过jQuery / Ajax函数以及联系脚本,但是在这个场景中,进程运行到ajax请求,然后返回错误:空字符串。
$(document).ready(function(){
jQuery("#sendmail").click(function(){
var name = $("#name").val();
var phone = $("#phone").val();
var email = $("#email").val();
var text = $("#message").val();
//var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&text=' + text;
var datastr ='name=' + name + '&phone=' + phone + '&email=' + email + '&text=' + text;
$("#form-div").css("float", "left");
$("#form-div").html("<p>Thank you for contacting Stillframe Photography.</p><p>Please wait for just a few moments while your enquiry is being sent.</p>");
$("#form-div").fadeIn("slow");
alert(datastr);
jQuery.ajax({
type: "POST",
url: "contact.script.php",
data: datastr,
success: function(html){
$("#response").fadeIn("slow");
$("#response").html(html);
//setTimeout('$("#response").fadeOut("slow")',2000);
}
,error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#response").html('there was an error');
console.log('error thrown');
console.log(errorThrown);
}
});
});
});
您可以在http://www.stillframe.com.au/test.php看到正在运行的页面,您可以在上面的同一链接中看到没有页面媒体的表单但是test2.php
我还将没有任何其他jQuery的脚本添加到同一个url中,但test3.php直接发布到联系人PHP脚本以确认该脚本中没有错误。
已解决:从头部删除了基本href标记,脚本现在可以正常工作。
答案 0 :(得分:8)
不使用逐个字段,而是使用FORM ID <form id="myform">
并对其进行序列化。试试这个:
$(document).ready(function(){
jQuery("#sendmail").click(function(){
jQuery.ajax({
type: "POST",
url: "contact.script.php",
data: $('#myform').serialize(),
cache: false,
success: function(output) {
$("#form-div").css("float", "left");
$("#form-div").html("<p>Thank you for contacting Stillframe Photography.</p><p>Please wait for just a few moments while your enquiry is being sent.</p>");
$("#form-div").fadeIn("slow");
$("#response").html(output);
$("#response").fadeIn("slow");
//setTimeout('$("#response").fadeOut("slow")',2000);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#response").html('there was an error');
console.log('error thrown');
console.log(errorThrown);
}
});
});
});
答案 1 :(得分:-4)
最好将ajax与原始javascript一起使用,原因如下。
你的目标只是将变量从javascript发送到php,正确的休息会得到照顾,lemme为你添加一个示例代码。
function insert(){
if(window.XMLHttpRequest)
{
xmlhttp = new window.XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == '4' && xmlhttp.status == '200')
{
document.getElementById('msg').innerHTML = xmlhttp.responseText;
}
}
name = document.getElementById('insert').value;
parameters = 'insert=' + name;
xmlhttp.open('POST', 'day3.include.php', true);
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send(parameters);
}
在参数中相应地传递所有变量并创建div#msg以显示来自php的回复。
如果您有任何疑惑,请回复http://www.thetutlage.com