代码之家  ›  专栏  ›  技术社区  ›  Seva Alekseyev

jQuery到PHP:没有输入…有点

  •  1
  • Seva Alekseyev  · 技术社区  · 14 年前

    我使用jQuery将HTTP请求发布到我的PHP页面(Apache/Linux,如果需要的话)。我在客户机上仔细验证,这样就不会发送空请求。但有时,我会收到这样一个空请求:

    -内容长度不为零(100以下的数字,与脚本中的有效文章一致)
    -内容类型正确应用程序/x-www-form-urlencoded

    就好像$邮在途中被吃掉了。我非常仔细地检查了代码-我没有对$\u POST的内容做任何操作。

    如果客户端验证失败,我会得到一个带有空字段的$\帖子。事情是这样的,我一点田地都没有。完全困惑。

    有什么想法吗?

    更新:客户端请求提交代码如下:

    var r = trim((re = document.getElementById("tread")).value),
        m = trim((me = document.getElementById("tmean")).value);
    if(r == "" && m == "")
        alert("Please provide.");
    else
    {
        $.post(URLPrefix + "tsearch.php", {R : r, M : m, Src:"bytext"}, DoneSearch, "html");
    }
    

    $.post(URLPrefix + "tsearch.php", {K0 : KCode(0),
        K1 : KCode(1), K2 : KCode(2), K3 : KCode(3),
        P : document.getElementById("pos").checked ? 1 : 0,
        Src:"bykanji"}, DoneSearch, "html");
    

    2 回复  |  直到 14 年前
        1
  •  0
  •   sjobe    14 年前

    如果您使用jQuery/Javascript在客户端进行验证,那么关闭脚本的客户端不会命中您的验证代码。如果您想对此进行测试,可以使用一个额外的隐藏字段,并在表单中使用JS将其设置为一个值。

    <input  type="hidden" value="False, JS is off" name="my-hidden-field" />    
    

    和int你的javascript

    $('#my-hidden-field').val('True, JS is on');
    

    您可以使用它来查看空的post是否是验证代码未能在客户端运行的结果。

        2
  •  0
  •   niczak    14 年前

    老实说,我建议同时进行客户端和服务器端验证。使用PHP检查$\u POST[]数组中的空/空输入非常简单。 大概吧 你的JavaScript应该捕获空的输入,不允许请求,但是万一有人从你的JS旁经过,你应该在服务器上反复检查。简单到:

    if(empty($_POST['val']))
     // throw error