我有Ajax文件,其中代码已编写为接受来自用户的值,然后这些值在Ajax函数中获取,如下所示:
$(document).ready(function(){ $("#newsletterform").validate(); $('#Submit').click(function(){ var name = $('#newsletter_name').val(); var email = $('#newsletter_email').val(); sendValue(email,name); }); });
传递值和从其他文件获取值的函数:
function sendValue(str,name){ $.post( "newsletter/subscribe.php", //Ajax file { sendValue: str, sendVal: name }, function(data2){ $('#display').html(data2.returnValue); }, //How you want the data formated when it is returned from the server. "json" ); }
并将这些值传递给另一个名为“subscribe.php”的文件,其中写入了数据库的插入代码,并再次将值返回到我的第一个ajax函数,如下所示:
echo json_encode(array("returnValue"=>$msg)); The msg is ging to contain my message to be displayed.
但是现在,这在localhost上运行正常,我得到了正确的返回值nad消息但是当我在服务器上传它时,这给了我一个错误:
data2 is null [Break on this error] $('#display').html(data2.returnValue);
这只会给返回值带来错误,但插入,发送邮件功能正常 请给我一个很好的解决方案,我可以在没有任何错误的情况下取回返回值 提前谢谢。
答案 0 :(得分:1)
如果它适用于您的开发网站,我怀疑您的PHP脚本中存在错误。 你的主机可能运行一个没有json_encode()的古老php版本。 只需手动调用脚本即可检查其输出。如果需要POST,您可以使用FireBug
编写表单或将结果检查到您的ajax调用答案 1 :(得分:0)
如果没有其他解释,为什么会发生这种情况,请尝试以下方法:
$(document).ready(function(){
$("#newsletterform").validate();
$('#Submit').click(function(e){ // added the e paramenter
var name = $('#newsletter_name').val();
var email = $('#newsletter_email').val();
sendValue(email,name);
e.stop(); // dont submit the form normaly
});
});
答案 2 :(得分:0)
如果您有firebug,请将data2写入其控制台并查看它是什么:
function(data2) {
console.log(data2);
$('#display').html(data2.returnValue);
}
此外,您可以使用firebug网络面板查看您的php文件原始响应(如果它有错误 - 您将在那里看到它)。
答案 3 :(得分:-2)
使用:
var response = $.ajax({
type : "POST",
url : "newsletter/subscribe.php",
dataType : "json",
async : false,
data : "sendValue="+str+"&sendVal="+name
}).responseText;