Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用jquery在我的网站公共目录上调用ajax函数吗?_Jquery_Html_Ajax - Fatal编程技术网

我可以使用jquery在我的网站公共目录上调用ajax函数吗?

我可以使用jquery在我的网站公共目录上调用ajax函数吗?,jquery,html,ajax,Jquery,Html,Ajax,我一直在尝试建立一个基本的网站登录系统。现在,在将凭据发送到数据库之前,我一直在进行错误验证。我的问题是:我对网站架构的理解很幼稚&我对AJAX和JQuery缺乏熟练。我会尽量使我的问题尽可能简洁,但我保证在这里的某个地方我会问一个愚蠢的问题:S 我的工作范围: 我正在尝试设置一个非常简单的web前端,它可以与我先前存在的SQL后端交互。我还试图将我与后端的大部分交互与我的公共html文件分开。因此混淆了所有真正重要的东西(数据库凭证、SQL交互等)。这使得邪恶的个人很难破坏我的后端框架。我想你

我一直在尝试建立一个基本的网站登录系统。现在,在将凭据发送到数据库之前,我一直在进行错误验证。我的问题是:我对网站架构的理解很幼稚&我对AJAX和JQuery缺乏熟练。我会尽量使我的问题尽可能简洁,但我保证在这里的某个地方我会问一个愚蠢的问题:S

我的工作范围: 我正在尝试设置一个非常简单的web前端,它可以与我先前存在的SQL后端交互。我还试图将我与后端的大部分交互与我的公共html文件分开。因此混淆了所有真正重要的东西(数据库凭证、SQL交互等)。这使得邪恶的个人很难破坏我的后端框架。我想你可以说我是为了网络“安全”,因为我几乎所有的文件(除了2,login.php和loggedIn.php)都不能被任何不能直接访问服务器的人读取

例如

我的网页目录:

secrets
public_html
-MyWebsite
secrets
public_html
I
-MyWebsite
I
--login.php
--Jquery.js
--Ajax.php
如果:

我将login.php、Jquery.js和Ajax.php文件都放在“public_html/MyWebsite”中,效果很好

我的网页目录:

secrets
public_html
-MyWebsite
secrets
public_html
I
-MyWebsite
I
--login.php
--Jquery.js
--Ajax.php
但是

如果我改变文件的位置,事情就开始崩溃。我想象这是因为我的代码中有一些我似乎看不到的东西。还是我的架构/逻辑中的一个超级天真的错误

这就是我试图实现的体系结构:

secrets
I
--Jquery1.js
--Ajax.php
*************
public_html
I
-MyWebsite
I
--login.php    (with a few Jquery/Ajax calls)
--loggedIn.php ( interspersed referencing my core files ^)
--Jquery.js
我之所以试图做到这一点,是因为在实践中,如果我们有这两个在线直播。如果我们导航到:

www.MyWebsite.com/MyWebsite/login.php

上面的案例1和案例2^
都将带我们进入login.php

但是,如果我们输入:

www.MyWebsite.com/MyWebsite/Jquery.js

案例1
将以纯文本形式介绍Jquery.js。任何想查看它的人都可以100%看到它

案例2将给我们带来404。问题解决了,所有JQuery对世界都是不可见的

这同样适用于AJAX,但是AJAX只会产生调用的结果。所以,对网络安全没有那么大的危害,但仍然是一个令人沮丧的人

所以。就目前而言,案例1对我来说很好,但我不明白为什么案例2不会。再次,请原谅我,如果这是一个非常愚蠢的我显然不是一个“专业”本身。但我将尝试提供尽可能多的经过清理的代码,以使这一点尽可能简单明了,而对web架构的了解很少

案例1代码

login.php


登录
Jquery.js

$(文档).ready(函数()
{
$('#logForm')。提交(函数(事件)
{
$('.form group').removeClass('has-error');
$('.help块').remove();
变量日志数据={
'userName':$('input[name=txtUserName]).val()
}
$.ajax({
类型:'POST',//表单类型
url:'Ajax.php',
数据:日志数据,
数据类型:“json”,//返回期望值,
编码:正确
})
.完成(功能(数据)
{
如果(!data.success)
{
if(data.errors.userName)
{
$(“#用户名组”).addClass('has-error');
$(“#用户名组”).append(“”+data.errors.userName+“”);
}
}
其他的
{
//开始做数据库的事情
}
})
.失败(功能(数据)
{
});
event.preventDefault();
});
});
函数formBuild(){
$('body')。追加('');
$(“#主体”)。附加(“”);

$(“#logForm”).append(“所有js/css/图像都在客户端工作(节点除外),这意味着它需要下载才能工作,因此它应该位于公共html文件夹中,因为它需要由最终用户浏览器检索才能执行。

首先,请阅读如何创建一个,重点是“最小”在这个问题中有大量不必要的信息。寻求调试帮助的问题(“为什么这个代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者来说是没有用处的。请参阅:第二,不,出于充分的理由,您不能使用AJAX调用无法通过web访问的内容。想象一下,如果可以的话;您可以不费吹灰之力地检查任何网站。你必须让用户能够访问你的AJAX端点;AJAX并不能绕过服务器对它将提供哪些目录和文件的限制。@EdCottrell谢谢你,Ed!在我下一篇文章发表之前,这将是我的一篇文章!这里再次强调,超级不专业。所以我想问一个问题这是一个愚蠢的问题。JQuery必须在public_html中,AJAX可以在my secrets文件夹中?不,您希望通过web直接访问的所有内容都必须在服务器的目标文件夹中。包括页面、图像、脚本(包括JQuery),以及您希望通过AJAX调用的任何内容。如果您将某个内容放在一个私人的、不可通过web访问的文件夹中,则无法直接通过web访问该文件夹。这就像将通知锁在壁橱的保险箱中,试图将通知放在办公室门上一样;这样做行不通。非常感谢!因此,JQuery不可能存在于外部公共html?
<?php

$inputUser= $_POST['userName'];

if (empty($inputUser))
    {
        $errors['userName'] = 'Username is required';
    }


if (!empty($inputUser))
        {
            $errors['userName'] = 'You have to enter a Username';
        }



if (!empty($errors)) 
    {
        //RETURN ERROR DATA
        $data['success'] = false;
        $data['errors']  = $errors;
        $_SESSION['Fail'] = "True";
    } 
else
    {
        //ALL ERRORS PASSED
        //DO DB STUFF
    }

//Return Data to form. - Errors
echo json_encode($data);
?>
<?php


?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
    <script src="Jquery1.js" type="text/javascript"></script> 

    <title>Login</title>

</head>
<body onload="populatePage()">
</body>
</html>
 $(document).ready(function()
 { 

});

function formBuild() {
$('body').append('<div class="container" id="MainBody"></div>');
$("#MainBody").append('<form class="form-horizontal" role="form" id="logForm" name="" method="POST" action=""></form>');
$("#logForm").append('<div id="userName-group" class="form-group"</div>');
$("#userName-group").append('<label for="txtUserName" class="col-sm-2 control-label">Username:</label>');
$("#logForm").append('<div class="form-group" id="btnSubby"></div>');
$("#btnSubby").append('<div class="col-sm-10 col-sm-offset-2"><button type="submit" class="btn btn-success">Submit <span class="fa fa-arrow-right"></span></button></div>');
$("#MainBody").append('<div class="form-group" id="btnNeggy"></div>');
$("#MainBody").append('<div class="container text-right "><button  class="btn btn-warning" onclick="checkError()">Help Me<span class="fa fa-arrow-right"></span></button></div>');
}

function checkError() 
{
    // CALL JQuery FILE FROM OUTSIDE WEB  DIRECTORY*******
    $.ajax({url: "config/Jquery1.js", dataType: "script", success: function(TestLogin){}});
    //*******PROBABLY WHERE THINGS ARE GOING WRONG?******
}
<?php

function Login()
{
    $inputUser = $_POST['userName'];

   if (!empty($inputUser))
        {

        }
    else
        {
            $errors['userName'] = 'Username is required';
        }

    if (!empty($errors)) 
    {
        //RETURN ERROR DATA
        $data['success'] = false;
        $data['errors']  = $errors;
        $_SESSION['Fail'] = "True";
    } 
}

//RETURN VABIABLE DECLARATION
    echo json_encode($data);
?>
function TestLogin()
{
    $('.form-group').removeClass('has-error'); 
    $('.help-block').remove(); 

    var logData = {
        'userName': $('input[name=txtUserName]').val()
    }

    $.ajax({
        type        : 'POST', //Form Type
        url         : 'Ajax.php', 
        data        : logData, 
        dataType    : 'json', // Return Expectation,
        encode      : true,
        success     : function(Login){
            //SUCCEED AND MESS WITH DB
            //IT NEVER SEEMS TO MAKE IT HERE?
        }
    })

    .done(function(data)
        {
            if(!data.success)
            {
               if (data.errors.userName) 
                    {
                        $('#userName-group').addClass('has-error'); 
                        $('#userName-group').append('<div class="help-block">' + data.errors.userName+ '</div>');
                    }
            }
            else
            {
                //FAILURE CONDITIONS
            }
        })
    .fail(function(data)
        {

        });
    event.preventDefault();
}


function checkError() 
{
   //AGAIN, TEST BUTTON TO HIDE FORM AND SEE IF COMMUNICATION IS TAKING PLACE
   $("#logForm").hide(); 
}