最佳实践ajax,简单变量请求

时间:2013-09-23 08:10:24

标签: jquery ajax

我正在尝试从jQuery发出请求,看看存储中是否有足够的资源来构建一个房子。我真的不明白ajax-functions $ .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;
}
?>

2 个答案:

答案 0 :(得分:1)

您必须了解HTTP methods是什么。以下是一些很好的参考资料:

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

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

POST的向后是当您的用户想要与其他人共享过滤结果时,他们不能只复制和粘贴链接,这是令人失望的。如果网址太长(more info),则GET的后方是服务器可能会丢失信息。

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

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

答案 1 :(得分:0)

$。get和$ .post函数只是使用$ .ajax方法获取GET和POST请求的简写方法,您可以使用$ .get来生成GET请求,使用$ .post来使用标准选项发出POST请求,例如:网址,数据,成功回调和数据类型。

  

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

     

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

并使用$ .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();
    }
});