无法获得$ .ajax或$ .get来工作

时间:2009-09-19 23:36:21

标签: ajax jquery

我有这个$ .ajax(使用jquery)代码,它最初是$ .get现在已经注释但由于某种原因我总是得到错误而且我找不到它有什么问题= /,我忽略了什么吗?

$.fn.randomContent = function(options){
    var contentArray = new Array();
    var dType = "html";
    var defaults = {
        xmlPath: "../xml/client-quotes.xml",
        nodeName: "quote"
    };
    var options = $.extend(defaults, options);
    alert(options);
    $.ajax({
        type: "GET",
        url: "../xml/client-quotes.xml",
        dataType: "html",
        success: function(){
            $(defaults.nodeName).each(function(i){
                contentArray.push($(this).text());
            });
            $(this).each(function(){
                $(this).append(getRandom());
            });
        },
        error: function(){
            alert("Something Went wrong");
        }

    });
    /*$.get(defaults.xmlPath, function(){
                                         alert("get");
        $(defaults.nodeName).each(function(i){
            contentArray.push($(this).text());
        });
        $(this).each(function(){
            $(this).append(getRandom());
        });
    }, type);//$.get*/
};

这是getRandom()函数:

function getRandom() {
    var num = contentArray.length
    var randNum = Math.floor(Math.random()*num)
    var content = "";
    for(x in contentArray){
        if(x==randNum){
            content = contentArray[x];
        }
    };
    alert(content);
    return content;
}

2 个答案:

答案 0 :(得分:1)

可能是浏览器正在缓存您的GET请求。在这种情况下,要么:

  1. 确保服务器正在控制您的缓存选项(使用私有或无缓存的缓存控制设置)
  2. 将您的AJAX调用方法更改为POST而不是GET
  3. 通过添加随每个请求更改的查询字符串参数来区分您的GET请求
  4. 我更喜欢选项#1,特别是因为POST操作旨在改变服务器上的某些内容,因此我们应该在我们的操作实际上修改服务器状态时使用该方法。另一方面,GET请求只是读取数据的请求。

    我觉得GET请求更适合此任务,因此在我自己的代码中,我会阻止响应的缓存。

答案 1 :(得分:0)

这个网址必须是绝对的吗?我从来没有尝试用“../”来执行ajax请求。你安装了FireBug吗?您可以检查服务器的响应标头。