2011-02-28 82 views
0

好的,我有这两个输入字段,用户放入两个twitter名称。当按下提交按钮时,两个名称都应该用POST方法发送到一个.php文件,该方法检查两个用户名是否在twitter上存在。如何用jQuery发送两个输入

发送和接收一个值的答案已经有效,但我怎样才能添加第二个?我已经有这样的:

<script type="text/javascript"> 
function checkUsername() 
{ 

    $.ajax({ 
     type: 'POST', 
     url: 'tu.php', 
     **data: {'user1' : $('#user1').val() },** //how to append user2? 
     dataType: "json", 
     success: function(data){ 
      $('#uitslag').html(JSON.stringify(data)); 
      $('#user1text').html(data['user1']); 
      $('#user2text').html(data['user2']); 
     } 
    }); 
} 
</script> 

在表单中的字段:

<td><input type="text" name="user1" id="user1"/></td> 
    <td><input type="text" name="user2" id="user2" /></td> 

,这是值应如何能在.PHP被cathed:

$user1 = $_POST['user1']; 
$user2 = $_POST['user2']; 

所以这个问题真的是:我如何追加第二个用户名到上面的jQuery POST函数?

p.s.我开始与JavaScript和jQuery,你们如何工作,因为没有错误消息显示过..有没有一个环境/ programm我得到调试与JavaScript的帮助?

+0

关于你最后的问题,据我所知,firefox + firebug插件几乎是javascript开发的标准。 – kikito 2011-02-28 15:49:26

+0

还谷歌铬开发工具是非常有用的工业调试javascript – Qchmqs 2011-11-08 09:29:03

回答

1

这是一个足够简单的扩展 - 只需遵循相同的模式。

<script type="text/javascript"> 
function checkUsername() 
{ 

    $.ajax({ 
     type: 'POST', 
     url: 'tu.php', 
     data: { 
      'user1' : $('#user1').val(), 
      'user2' : $('#user2').val() 
     }, 
     dataType: "json", 
     success: function(data){ 
      $('#uitslag').html(JSON.stringify(data)); 
      $('#user1text').html(data['user1']); 
      $('#user2text').html(data['user2']); 
     } 
    }); 
} 
</script> 

这就是说,jQuery不会也有,你可以施用含形式,自动序列整个窗体上.serialize()功能。这可能对你有用。


编辑:值得一提的是,jQuery选择上面看的ID的名称“USER1”(等等),而PHP脚本预期的表单元素是“user1”(等)。在这里,你将它们视为同一件事。

更可靠的jQuery选择,它会让你总是在这两个jQuery和PHP使用的名称是简单地使用jQuery的属性选择:

$('input[name="user1"]').val() 

这将捕获任何<input>元素与name属性设置为“user1”。

+0

谢谢,我以为我试过你的解决方案,它不工作,必须错过了逗号或somethign,谢谢!感谢您的ID /姓名注册,谢谢,一直在使用两个,现在将切换到使用一个! – Javaaaa 2011-02-28 15:58:19

+0

@Javaaaa:你不需要,它只是在以后为你解决问题。您目前的方式将始终如一,因为您的ID和姓名对于您的所有表单字段都是相同的。但是如果你在jQuery中使用name属性,那么你可以使用任何你想要的ID。 – 2011-02-28 16:03:32

+0

是的,我明白了,稍后再给我更多空间,谢谢! – Javaaaa 2011-02-28 16:49:59

2
data: { 
    'user1' : $('#user1').val(), 
    'user2' : $('#user2').val() 
}, 
+0

该死的,谢谢这个作品!这是我第一次尝试使其工作,但我想一些逗号失踪或什么! – Javaaaa 2011-02-28 15:56:36

1

您可能在寻找serialize。您的代码会是这个样子:

function checkUsername() 
{ 

    $.ajax({ 
     type: 'POST', 
     url: 'tu.php', 
     data: $("#your_form").serialize(), 
     dataType: "json", 
     success: function(data){ 
      $('#uitslag').html(JSON.stringify(data)); 
      $('#user1text').html(data['user1']); 
      $('#user2text').html(data['user2']); 
     } 
    }); 
} 

如果你确定你不想序列化,你可以试试这个:

data: {'user1' : $('#user1').val(), 'user2' : $('#user2').val() } 

至于你的PS,检查FirebugWebkit developer tools

+0

也谢谢你的解决方案! – Javaaaa 2011-02-28 16:00:16

1

实际上你甚至不需要序列化函数。如果你只是选择你的表单,所有的表单元素将被传递。这样,如果你只是添加另一个表单元素,就像另一个文本框一样,它将全部在你的ajax调用中传递。

function checkUsername() 
{ 

    $.ajax({ 
     type: 'POST', 
     url: 'tu.php', 
     data: $("#your_form"), 
     dataType: "json", 
     success: function(data){ 
      $('#uitslag').html(JSON.stringify(data)); 
      $('#user1text').html(data['user1']); 
      $('#user2text').html(data['user2']); 
     } 
    }); 
} 
+0

另外我注意到你是如何使用json对象开始返回的。根据你的代码,在成功的时候你会得到和对象传入命名数据。该对象有许多可以访问的属性。所以如果user1是一个属性,所有你需要写的是data.user1或data.user2,你将能够访问该对象中的值。它已经为你序列化,因为你通过dataType:“json” – jnoreiga 2011-02-28 20:20:50

+0

感谢您的提示!关于访问数据! – Javaaaa 2011-02-28 20:23:06