Jquery 最佳实践ajax,简单变量请求
我正试图从jQuery发出请求,看看存储中是否有足够的资源来建造房子。我不太明白ajax函数$.get、$.post和$.ajax之间的区别,以及何时使用它们。 我认为$.ajax是一个更高级的函数,它还包括get和post,但是我什么时候使用get,什么时候使用post呢?还有,我用的是什么?用正确的方法来这里 以下是我的jQuery代码:Jquery 最佳实践ajax,简单变量请求,jquery,ajax,Jquery,Ajax,我正试图从jQuery发出请求,看看存储中是否有足够的资源来建造房子。我不太明白ajax函数$.get、$.post和$.ajax之间的区别,以及何时使用它们。 我认为$.ajax是一个更高级的函数,它还包括get和post,但是我什么时候使用get,什么时候使用post呢?还有,我用的是什么?用正确的方法来这里 以下是我的jQuery代码: var x = 10 // x-position var y = 10 // y-position $.get('request.
var x = 10 // x-position
var y = 10 // y-position
$.get('request.php?house=cottage&x='+x+'&y='+y, function(data){
if(data == 1){ // If there is enough resources etc... return 1.
itemId++; // Set unique id for this building.
$('body').append("<div class='house' id='" + itemId + "'></div>");
$('#'+itemId).css({
marginLeft: x - ($('.house').width())/2,
marginTop: y - ($('.house').width())/2
});
$('#rightMouseMenu').hide();
}
});
var x=10//x位置
变量y=10//y位置
$.get('request.php?house=butch&x='+x+'&y='+y,函数(数据){
如果(数据==1){//如果有足够的资源等…返回1。
itemId++;//设置此建筑的唯一id。
$('body')。追加(“”);
$('#'+itemId).css({
marginLeft:x-($('.house').width())/2,
marginTop:y-($('.house').width())/2
});
$(“#rightMouseMenu”).hide();
}
});
以及request.php:
<?php
$house = $_GET['house'];
$x = $_GET['x'];
$x = $_GET['y'];
// Some request to database to see if there is enough resources to build a house in enoughResources()
if(enoughResources() == 1){
echo 1;
}else{
echo 0;
}
?>
您必须了解HTTP方法是什么。以下是一些很好的参考资料:
基本上,您必须使用
GET
来从服务器获取数据
,而使用POST
来向服务器提供数据
。但是,对于应该使用哪种方法没有实际限制。这取决于使用场景,值得注意的是,它们都有各自的局限性
POST
的反向功能是,当您的用户想要与其他人共享过滤结果时,他们不能仅复制和粘贴链接,这令人失望。GET
的后面是,如果url太长,服务器可能会丢失信息()
还有一件事,一些人可能会误解,POST
比GET
更安全,因为用户看不到发送的数据。然而,除非您使用SSL,否则它们对您来说都是不安全的
在您的例子中,您的目标是“在数据库中创建一个房子”。尽管在构建资源之前必须检查资源,这看起来像是“从服务器获取信息”,但您的最终目标是存储。因此,在我看来,使用
POST
更符合逻辑。$.get和$.POST函数只是获取和发布请求的简写方法。使用$.ajax方法,您可以使用$.get发出get请求,使用$.POST发出POST请求,并使用标准选项,如url、数据、成功回调和数据类型
$.get(url[,数据][,成功(数据,文本状态,jqXHR)][,数据类型])
$.post(url[,数据][,成功(数据,文本状态,jqXHR)][,数据类型])
并使用$.ajax方法发出具有更多选项的请求
基本上,您可以将示例改写为:
var x = 10 // x-position
var y = 10 // y-position
$.get('request.php', {'house': 'cottage', 'x': x, 'y': y}, function(data){
if(data == 1){ // If there is enough resources etc... return 1.
itemId++; // Set unique id for this building.
$('body').append("<div class='house' id='" + itemId + "'></div>");
$('#'+itemId).css({
marginLeft: x - ($('.house').width())/2,
marginTop: y - ($('.house').width())/2
});
$('#rightMouseMenu').hide();
}
});
var x=10//x位置
变量y=10//y位置
$.get('request.php',{'house':'schoot','x':x','y':y},函数(数据){
如果(数据==1){//如果有足够的资源等…返回1。
itemId++;//设置此建筑的唯一id。
$('body')。追加(“”);
$('#'+itemId).css({
marginLeft:x-($('.house').width())/2,
marginTop:y-($('.house').width())/2
});
$(“#rightMouseMenu”).hide();
}
});
因此,如果我想根据我的问题从服务器获得答案,在这种情况下,三个参数(house、x和y)是“获取数据”还是“提供数据”呢?我认为两者都是……你必须使用GET
。您使用一些过滤器(house、x和y)从服务器获取数据。过滤器不是要存储在服务器上的数据。发送将存储在服务器上的数据时,请使用POST
。好的!我读了w3schools链接,但不明白这篇文章的坏处是什么?为什么不经常使用它呢?是否只是如果我想保存一个链接到请求的可能性?而且,我上面没有提到,但是PHP脚本也在数据库中存储了刚构建的房子,是不是仍然正确?对不起,我误解了你的问题。我已经更新了答案。@theva,如果这个答案解决了你的问题,请记住接受它。因此,有类似问题的人可以得到帮助。好的,谢谢!如何用PHP以最佳方式回答问题?似乎有更好的解决方案,而不仅仅是呼出1或0。是吗?服务器返回的内容没有限制,因此可以是JSON、XML甚至是平面文本。但最简单的响应类型是JSON,因为它可以在客户端轻松处理。此外,jQuery可以自动识别响应类型并将正确的JSON对象返回到成功回调,或者您可以在dataType选项中手动指定它。查看此以了解更多信息。