2012-10-22 32 views
0

如果我有很多由PHP生成的表单,并且希望每个表单上都有一个“回复”按钮,它通过ajax将表单的内容发送到另一个php页面,那么我可以对所有这些元素使用相同的JavaScript代码段?多个表单使用相同的AJAX调用具有不同的结果?

<form id="foo"> 
    <label for="bar">A bar</label> 
    <input id="bar" name="bar" type="text" value="" /> 
    <input type="submit" value="Reply" /> 
</form> 

所以,如果我这样做了以下内容,然后我还可以单独处理所有的答复,并仅显示“回复”被点击的元素有关的反应?

$("#foo").submit(function(event){ 
    $.ajax({ 
     url: "/form.php", 
     type: "post", 
     data: serializedData, 
     // callback handler that will be called on success 
     success: function(response, textStatus, jqXHR){ 
      // log a message to the console 
      console.log("Hooray, it worked only in the element it was clicked in!"); 
     }); 
    // prevent default posting of form 
    event.preventDefault(); 
}); 
+0

是的,你可以,你有什么问题?您发布的代码只适用于ID为_#foo_ –

+0

的表单我不确定您要问什么?您正在生成一个包含大量'

'元素的HTML页面,然后想要处理提交的特定表单,并且可能只是在提交的表单旁边显示结果? – ernie

回答

0

如果你想处理页面上的所有表单,你的代码可以稍作修改。

$("form").submit(function(event){ 
    $.ajax({ 
     url: "/form.php", 
     type: "post", 
     // You have to have a way to retrieve the form data 
     data: getFormData(form), 
     success: function(response, textStatus, jqXHR){ 
      console.log("Hooray, it worked only in the element it was clicked in!"); 
     }); 
    // prevent default posting of form or just return false 
    event.preventDefault(); 
}); 
+0

OP表示,他想限制提交只能点击事件 – Landon

+0

@Landon不,OP表示他只想处理它的形式,该按钮被点击,不仅如果它被点击。 –

-1

不,提交表单有多种方式。你会想你的第一行更改为:

$("#replybutton").click(function(event){

然后,你必须到replybutton ID添加到您的按钮,你必须明确地列出你的Ajax调用的数据元素。此外,event.preventDefault()将是不必要的。想想看,整个<form>标签也是不必要的。

还有其他方法可以使用表单来做到这一点,但这是最简单的。

+0

如果您明白提交表单有多种方式,则无法说明为什么要从提交处理程序更改为点击处理程序。 –

+0

他说他想限制让ajax调用点击回复按钮的事件,他想阻止其他提交表单的方式 – Landon

+0

您误解了OP说的内容,他们说“只显示响应“Reply”被点击的元素?“这意味着,只适用于提交(点击)而不是其他人的表单。 –

相关问题