如何使用ajax返回值

时间:2010-05-10 05:19:03

标签: php ajax

我有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);  

这只会给返回值带来错误,但插入,发送邮件功能正常 请给我一个很好的解决方案,我可以在没有任何错误的情况下取回返回值 提前谢谢。

4 个答案:

答案 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;