0

我有一段 HTML 代码:

<div id="question_form">
<form method="POST" id="question_form" action="addQuestion.php">
<input type="hidden" id="u_id" name="u_id" value="6"/>
<input type="hidden" id="u_a_name" name="u_a_name" value=""/>
<textarea placeholder="question here" cols="138" rows="3" name="question" id="question_input"/>
<input type="image" class="ask_button" value="submit" src="img/ask.png"/>
</form>
</div>

这里是 JavaScript:

$(".ask_button").click(function() {
        $.ajax({
               type: "POST",
               url: "addQuestion.php",
               data: $("div#question_form").formSerialize() + "&textareadata="+escape($("#question_input").value),
               success: function(data)
               {
                        if (data == "Asked") {
                        window.location.reload();
                    } else {
                        alert(data);
                    }
               }
             });
        return false;
    });

php 文件检查问题是否为空,如果不是 - 将其写入数据库。

当我单击提交按钮时,我看到 addQuestion.php 页面,但没有警报,尽管 php 脚本执行正确。有什么问题?

4

5 回答 5

1

escape($("#question_input").value)应该encodeURIComponent($("#question_input").val())

jQuery 对象没有 value 属性(.val()改为使用),这会导致您的代码出现错误,并可能导致表单提交到addQuestion.php


您还有两个id具有相同名称的标签:

<div id="question_form">
<form method="POST" id="question_form" action="addQuestion.php">

每个id标签在 HTML 中必须是完全唯一的,以便 jQuery 提供预期的结果。尝试重命名其中之一。

于 2012-12-30T04:21:00.973 回答
1

你可以看看这个类似的问题here

用php提交ajax表单

这已经被我解决了。并希望这对你也有帮助。

于 2012-12-30T04:43:56.190 回答
0

您可以简单地这样做来避免此类问题,

$(document).ready(function(){
$(".ask_button").click(function() {
    $.ajax({
           type: "POST",
           url: "addQuestion.php",
           data: $("#question_form").serialize(),
           success: function(data)
           {
                if (data == "Asked") {
                    window.location.reload();
                } else {
                    alert(data);
                }
           }
         });
    return false;
});

});

并为 div 和 form 提供不同的 id ...

于 2012-12-30T05:06:15.430 回答
0

好的,解决了。真的,我使用了错误的脚本,所以我改为.value手动.val()设置所有参数,所以现在它似乎可以工作了。

于 2012-12-30T04:54:21.423 回答
0

您可能遇到了阻止表单通过 ajax 发送的 Javascript 错误,并且它通过常规 HTTP 方式提交。

您看不到区别,因为表单的action属性与 ajax 请求 url 相同。如果您更改其中任何一个,您会注意到我的解释。

要跟踪问题,您应该在 firebug/firefox/chrome 控制台中启用“在导航时保留日志记录”或类似选项,再次进行测试,并在您导航到addQuestion.php.

于 2012-12-30T04:59:01.030 回答