0

如果我有许多由 PHP 生成的表单并且想要在每个表单上都有一个“回复”按钮,它通过 ajax 将表单的内容发送到另一个 php 页面,那么我可以对所有这些元素使用相同的 javascript 片段吗?

<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();
 });
4

2 回答 2

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();
 });
于 2012-10-22T23:48:17.960 回答
-1

不,提交表单有多种方式。您可能希望将第一行更改为:

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

然后,您必须将该回复按钮 ID 添加到您的按钮,并且您必须明确列出 ajax 调用中的数据元素。此外,这event.preventDefault()将是不必要的。想想看,整个<form>标签也是不必要的。

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

于 2012-10-22T23:40:30.410 回答