【问题标题】:Ajax validation using jquery and php where php file is also used as another page使用 jquery 和 php 进行 Ajax 验证,其中 php 文件也用作另一个页面
【发布时间】:2013-04-27 02:22:31
【问题描述】:

所以我使用 AJAX jQuery 进行了此验证,当我使用另一个文件来托管 ajax 将检查的 PHP 验证部分时,一切正常,然后当我将其传输到必要的文件时,它也被用作我网站中的一个页面一切都停止了工作。

请注意,由于该文件在站点中使用,因此该文件充满了样式、脚本、大量回显等。虽然我确实使用了 if 来隔离 ajax 将使用的 PHP 验证,但它仍然不起作用,虽然当我提醒成功数据时,它充满了 CSS 样式调用和我需要的返回值。

是否有任何解决此问题的方法,或者我是否真的必须使用单独的文件来保存我试图避免的验证代码,因为我试图拥有尽可能有限数量的文件。

Ajax 代码:

$("#formadder").click(function() {
    var formname = $('#formname').val();
    if(formname == "") {
        alert("Input Form Name!");
        return false;
    }
    $('#form-feedback').html('<img src="../images/ajax-loader.gif"/>');
    $.ajax({
        url: '../createForm.php',
        type: 'POST',
        data: "formname="+ formname,
        dataType: "json",
        success: function(d) {
            alert(d);
            if(d.stat == "1") {
                $('#form-feedback').html(d.error).css('color','red');
                return false;
            }
            else {
                $('#form-feedback').html('Form Created!').css('color','green');
                window.location.reload();
            }
        }
    });
});

createForm.php 的 PHP 代码是典型的页面文档类型,包括样式和脚本、正文标签,我认为整个包会干扰 AJAX 调用。

成功提示的内容:

测试

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

test 是我想通过 AJAX 检索的示例输出,但由于某种原因,还返回了 doctype。我在这个上从 AJAX 中删除了 JSON。

【问题讨论】:

  • 你能发布你的 php 和 ajax 代码吗?会不会很棒

标签: php jquery ajax


【解决方案1】:

发生这种情况是因为用于构建页面的相同 html 也被发送到 ajax 调用。我认为最好将这个逻辑放在一个单独的 PHP 文件中,但如果你真的想将它存储在一个文件中,那么请确保检查 $_POST 数组是否为空,如果它提供页面 Html、CSS ,如果不是,则进行验证并发回响应。

if( empty($_POST) ) {
// html, css and js here 
}
else 
{
   // php validation here 
}

【讨论】:

  • 我想我要对包含的文件执行 if,但现在我看到 html 部分也返回了。 QQ是需要将ajax的数据类型更改为json还是我可以删除那个?谢谢你
  • 取决于您返回的内容。从您的代码看来,您正在返回json。很难说,因为您还没有发布验证码。
  • 更多的是 1 或 0 以及一条错误消息,几乎说“你不能那样做”。我猜是json是用来加密数据的吧?
  • 如果你把它拿出来,那么我猜d.stat 是行不通的。因为 d 不会被解析为属性为 stat 的对象
  • 我知道我一直认为它是某种加密,因此使用了编码这个词。谢谢
【解决方案2】:
Is there any work around this problem or do i really have to use a separate file just to hold this validation code which **im trying to avoid since im trying to have as limited number of files as possible.**

你有尽可能多的文件,没关系。在编程中搜索什么是抽象

如果你想验证,那么你只需要检查是否在 php 中使用isset function() 接收帖子。而且你可以只在服务器端或客户端使用验证,两边都不需要。

【讨论】:

  • 实际上在服务器端可能总是需要验证。有一些简单的方法可以关闭客户端验证。
  • 客户端验证由您自己创建(O.o)。只需删除 if 状态并将 ajax 请求发送到服务器。但是客户端更好,对服务器的处理请求更少:D。只需检查您需要的字段是否已填写。小心mysql inyection。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多