0

我正在尝试从 jQuery 发出请求,以查看存储中是否有足够的资源来建造房屋。我不太了解 ajax 函数 $.get、$.post 和 $.ajax 之间的区别,以及何时使用哪个。我认为 $.ajax 是一个更高级的功能,它还包括 get 和 post,但是我什么时候使用 get,什么时候使用 post?而且,我在这里以正确的方式使用 .get 吗?

这是我的 jQuery 代码:

    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();
        }
    });

和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;
}
?>
4

2 回答 2

1

你必须学习是什么HTTP methods。这里有一些很好的参考:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html http://www.w3schools.com/tags/ref_httpmethods.asp

基本上,您必须在使用GETtoget data from the server时使用POSTto give data to the server。但是,您应该使用哪种方法并没有真正的限制。这取决于使用场景,值得注意的是它们都有自己的局限性。

倒退POST是当您的用户想要与其他人分享过滤结果时,他们不能只是复制和粘贴链接,这令人失望。GET如果 url 太长,服务器可能会丢失信息(更多信息)。

还有一件事,有些人会误解这POSTGET用户看不到发送的数据更安全。但是,除非您使用 SSL,否则它们对于故意的人来说都是不安全的。

在您的情况下,您的目标是“在数据库中创建房屋”。尽管您必须在构建之前检查资源,这看起来像是“从服务器获取信息”,但您的最终目标是存储。因此,在我看来,使用POST更符合逻辑。

于 2013-09-23T08:16:11.513 回答
0

$.get and $.post functions are just a Shorthand Methods to GET and POST requests with $.ajax method, you can use $.get to make GET request and $.post to make POST request with standard options like: url, data, success callback and data type.

$.get( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )

$.post( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )

And use $.ajax method to make requests with more options.

Basically you can rewrite your example to:

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();
    }
});
于 2013-09-23T08:26:16.487 回答