2011-11-27 80 views
0

我想要一个PHP文件回显发送给它的POST值 - 没有太多的运气。如何从jQuery返回.POST()数据?

的Javascript:

$(".loginform").submit(function() { 

    if ($(this).attr('rel') == "login") { 

     $(this).attr('rel', 'loggedin') 
     var $el = $(this); 

     $.post("init.php", {name: "John", time: "2pm" }, function (data) { 
      $el.after(data); 
     }) 
    } 

    return false; 
}); 

PHP:

if($_POST["name"]){echo $_POST["name"];}; //WHY DOESN'T THIS WORK? 

我有一种感觉,我不是很了解的数据类型传递。任何帮助,将不胜感激。

编辑: 我改变.post到下面,仍然无法正常工作。

$(".loginform").submit(function(){ 

    if($(this).attr('rel') == "login"){ 
     $(this).attr('rel', 'loggedin'); 
     var $el = $(this); 
     $.ajax({ 
      data: { name: "John", time: "2pm" }, 
      url: "init.php", 
      dataType: "json", 
      success: function(data){ 
       alert(data); 
      } 
     }); 
    } 
    return false; 
}); 

您可以前往http://thinkcloud.ly试试代码。点击“登录”,然后“提交”。 '登录'使用.GET,所以我知道这是有效的。

+0

确保你没有得到JavaScript语法错误。你在第4行和第8行之后缺少分号。 – Hal

+0

感谢您指出 - 它实际上运行正常(其他JavaScript),所以我知道它工作正常,加上我的开发工具不返回错误。 – Jared

+0

@Jared下面的答案是否可以解决您的问题? – MacMac

回答

0

您的问题仍然存在,在这里:

$el.after(data); 

您需要的元素来包装他们,试着这样做:

$el.after('<span>' + data + '</span>'); 

如果这不起作用,你能确认你所用看alert(data)

0

尝试

print_r($_POST); 
print_r($_REQUEST ); 

看范围。

& &用相同的var_dump 可以JSON编码数据有时候,它先用json_ * PHP函数等等......对于解码。

顺便说一句,萤火虫可以显示所有传递的变量。

此外,jQuery中的.post具有4'd参数(http://api.jquery.com/jQuery.post/) 数据类型。 dataType服务器期望的数据类型。默认值:智能猜测(xml,json,script或html)。

我正在使用json ...所以php脚本必须使echo(json_encode($ arr))这样的东西返回.post调用。

0

你有一对夫妇失踪;在JavaScript

一旦你有你的JavaScript理顺,下一步是确保数据实际被传递。安装firebug。有了这个,你可以看到到底是什么被发送到init.php。这样你就知道错误发生的地方。

例如...与萤火虫,你会知道的JavaScript没有正确解雇,并可能已经发现了错误。

+0

代码运行良好,没有分号,我在运行jsbeautifier之前测试了它 – Esailija

0

是,请确保您设置的数据类型,您可能需要使用$阿贾克斯,直到你得到它的工作:

$.ajax({ 
    data: { name: "John", time: "2pm" }, 
    url: "init.php", 
    dataType: "json", 
    success: function(data){ 
     alert(data); 
    } 
}); 
+0

很高兴看到您使用警报来验证数据;与数据类型JSON,他不能做他最初想要的东西,并直接附加到文档。 –

+1

为什么.ajax而不是.post? –

+0

Sam Creamer,是的,应该使用帖子。 – orolo