英文:
jquery ajax() function not working or even being acknowledged
问题
我目前正在开发一个项目,使用了jquery的ajax函数。我只想让ajax函数在单击某个按钮时从服务器上显示一个文件中的一些文本,但是当我点击按钮时它什么也没发生。我尝试添加一个错误消息,但似乎也不起作用。我确保使用了支持ajax函数的jquery版本,甚至复制粘贴了我知道有效的代码,但似乎一切都不起作用。
我的javascript文件
window.onload=loadDoc();
$(document).ready(function(){ // 应该被调用的函数
$("#accountInfo").click(function(){
$.ajax({url: "accountPerks.txt",
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
},
success: function(result){
$("#perksDiv").text(result);
}});
});
});
// 以下所有内容都是用于不同页面的函数
$(document).ready(function(){
$("#member1Info").click(function(){
$("#BandMember1").css("visibility", "visible");
});
});
$(document).ready(function(){
$("#member2Info").click(function(){
$("#BandMember2").css("visibility", "visible");
});
});
$(document).ready(function(){
$("#member3Info").click(function(){
$("#BandMember3").css("visibility", "visible");
});
});
function newAlbum(){
var node = document.createElement("li");
var textNode = document.createTextNode("aaaaallllpxas(2023)");
node.appendChild(textNode);
document.getElementById("albumList").appendChild(node);
$("#sneakPeak").css("visibility", "hidden");
}
var getAlbum = document.getElementById("sneakPeak");
getAlbum.onclick=function(){
newAlbum();
}
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function(){
if(xhttp.readyState == 4 && xhttp.status == 200){
document.getElementById("ExtraText").innerHTML = xhttp.responseText;
}
};
xhttp.open("GET", "TourInfo.txt", true);
xhttp.send();
}
我想要文本文件显示在的页面
<?php
session_start();
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CMP204 Unit Two Coursework Template</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<h1>User Profile</h1>
<nav>
<?php include_once "includes/links.php" ?>
</nav>
<?php
echo "Welcome " . $_SESSION["accountName"] . ".<br>";
?>
<button id="accountInfo" type="button" class="btn btn-info btn-md">Click here to learn about account privileges</button> <!-- 这个按钮应该显示来自服务器的文本 -->
<p id="perksDiv"> <p> <!-- 服务器的文本应该显示在这个段落里 -->
<div class="container-fluid">
<div class="row">
<div class="col-sm-4">
<form action="addGigsAttended.php" method="post">
add gig attended
<input type="text" name="GigToAdd">
<input type="submit">
</form>
</div>
<div class="col-sm-4">
<form action="editGigsAttended.php" method="post">
edit gig you want to change
<input type="text" name="GigToEdit">
<br>
select gig to replace it with
<input type="text" name="GigToReplace">
<input type="submit">
</form>
</div>
<div class="col-sm-4">
<form action="deleteGigsAttended.php" method="post">
delete gig attended
<input type="text" name="GigToDelete">
<input type="submit">
</form>
</div>
</div>
</div>
<p>Here are all the gigs you have attended</p>
</br>
<?php
$servername = "lochnagar.abertay.ac.uk";
$username = "sql2100904";
$password = "ftAYZgzXz6au";
$dbname = "sql2100904";
$conn = mysqli_connect($servername, $username, $password, $dbname);
$accountName = $_SESSION["accountName"];
$getGigs = mysqli_prepare($conn, "SELECT gigName FROM $accountName");
$results = mysqli_stmt_execute($getGigs);
mysqli_stmt_bind_result($getGigs, $GigLocation);
while (mysqli_stmt_fetch($getGigs)) {
echo $GigLocation . " ";
}
mysqli_stmt_close($getGigs);
myslqi_close($conn);
?>
<!--这些脚本是Bootstrap所必需的,必须放在关闭body标签之前-->
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<script src="javascript/script2.js"></script>
</body>
</html>
英文:
I'm currently developing a project which uses the jquery ajax function. I just want the ajax function to display some text from a file on a server when a certain button is clicked but when I click on the button it does nothing. I've tried adding in an error message but that doesn't seem to be working either. I've made sure to use a version of jquery which supports the ajax function and I've even copied and pasted code from sources that I know work but nothing seems to be working.
my java script file
window.onload=loadDoc();
$(document).ready(function(){ // the function that should be getting called
$("#accountInfo").click(function(){
$.ajax({url: "accountPerks.txt",
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
},
success: function(result){
$("#perksDiv").text(result);
}});
});
});
//everything below here are functions for separate pages
$(document).ready(function(){
$("#member1Info").click(function(){
$("#BandMember1").css("visibility", "visible");
});
});
$(document).ready(function(){
$("#member2Info").click(function(){
$("#BandMember2").css("visibility", "visible");
});
});
$(document).ready(function(){
$("#member3Info").click(function(){
$("#BandMember3").css("visibility", "visible");
});
});
function newAlbum(){
var node = document.createElement("li");
var textNode = document.createTextNode("aaaaallllpxas(2023)");
node.appendChild(textNode);
document.getElementById("albumList").appendChild(node);
$("#sneakPeak").css("visibility", "hidden");
}
var getAlbum = document.getElementById("sneakPeak");
getAlbum.onclick=function(){
newAlbum();
}
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function(){
if(xhttp.readyState == 4 && xhttp.status == 200){
document.getElementById("ExtraText").innerHTML = xhttp.responseText;
}
};
xhttp.open("GET", "TourInfo.txt", true);
xhttp.send();
}
The page I want the text file to appear on
<?php
session_start();
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CMP204 Unit Two Coursework Template</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<h1>User Profile</h1>
<nav>
<?php include_once "includes/links.php" ?>
</nav>
<?php
echo "Welcome " . $_SESSION["accountName"] . ".<br>";
?>
<button id="accountInfo" type="button" class="btn btn-info btn-md">Click here to learn about account privileges</button> // this button should display the text from the server
<p id="perksDiv"> <p> // the text from the server should be showing in this paragraph
<div class="container-fluid">
<div class="row">
<div class="col-sm-4">
<form action="addGigsAttended.php" method="post">
add gig attended
<input type="text" name="GigToAdd">
<input type="submit">
</form>
</div>
<div class="col-sm-4">
<form action="editGigsAttended.php" method="post">
edit gig you want to change
<input type="text" name="GigToEdit">
<br>
select gig to replace it with
<input type="text" name="GigToReplace">
<input type="submit">
</form>
</div>
<div class="col-sm-4">
<form action="deleteGigsAttended.php" method="post">
delete gig attended
<input type="text" name="GigToDelete">
<input type="submit">
</form>
</div>
</div>
</div>
<p>Here are all the gigs you have attended</p>
</br>
<?php
$servername = "lochnagar.abertay.ac.uk";
$username = "sql2100904";
$password = "ftAYZgzXz6au";
$dbname = "sql2100904";
$conn = mysqli_connect($servername, $username, $password, $dbname);
$accountName = $_SESSION["accountName"];
$getGigs = mysqli_prepare($conn, "SELECT gigName FROM $accountName");
$results = mysqli_stmt_execute($getGigs);
mysqli_stmt_bind_result($getGigs, $GigLocation);
while (mysqli_stmt_fetch($getGigs)) {
echo $GigLocation . " ";
}
mysqli_stmt_close($getGigs);
myslqi_close($conn);
?>
<!--these scripts are necessary for Bootstrap and must be before the close body tag-->
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<script src="javascript/script2.js"></script>
</body>
</html>
答案1
得分: 2
只使用一个$(document)函数,如果你使用太多的$(document)函数,那么响应中只会返回最后一个。
$(document).ready(function(){
// 在此处使用一个文档就绪函数并编写你的代码
})
然后使用你想要运行的其他函数加载到window.load函数中。
英文:
Use only 1 document function, if you will use too many $(document) functions than in response only last one will be returend.
$(document).ready(function(){
//use one doc ready and do your code in this
})
And use your other function that you want to run will be loaded in window.load function
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论