jQuery不会完成提交并在地址中添加参数

时间:2015-01-10 12:14:24

标签: javascript jquery html json forms

编辑:更新了jsFiddle链接。见第二句。

我正在建立一个网站,通过使用subreddit API为您推荐subreddits。 该项目是here。由于我没有完成前端,因此最好在最大化的浏览器窗口中查看该网站。

它的工作原理是从表单中获取输入的subreddits,将其放入数组中(使用.serializeArray())。我也使用相同的函数来从第二个表单中获取省略的subreddits。然后它获取值并将它们放在一个字符串中。最终结果(在api变量中)应该类似http://www.reddit.com/api/recommend/sr/AskReddit,CasualConversation,?omit=SkypePals,,具体取决于输入的subreddits。 在此之后,它只是使用api变量作为getJSON()函数的参数,它将来自Reddit的JSON响应返回到json变量中。然后我使用each()迭代JSON响应,以便将推荐的subreddits放入右列(在推荐之下)。

我花了好几个小时试图解决这个问题但它仍然无法正常工作。单击提交按钮时,它会刷新页面并使用表单输入的输入将参数添加到地址栏中。我不知道为什么会这样。

任何帮助解决此问题并在将来避免这种情况将不胜感激。哈哈,我无法理解这个哈哈。我无法通过搜索找到任何有用的东西。我不确切知道这个问题的名称是什么。

显然,当我链接到jsFiddle时,我还需要在这篇文章中提供代码。我认为我的Javascript最相关所以我会提供:

$(document).ready(function () {
    var api = "http://www.reddit.com/api/recommend/sr/";
    var json;
    var redditBaseLink = "http://www.reddit.com/r/";
    var srLink;
    var srArray;
    var srString = '';
    var omitArray, omitString;

    $(".srInputForm").submit(function (event) {
        srArray = $(this).serializeArray();
        $.each(srArray, function (i, field) {
            srString += field.value + ",";
        });
        api = api.concat(srString, "?omit=");

        $.each(omitArray, function (i, field) {
            omitString += field.value + ",";
        });
        api = api.concat(omitString);

        json = $.getJSON(api);

        $.each(json, function (i, response) {
            srLink = "";
            srLink = '<div class="recommendation">' + '<a href="' + redditBaseLink + response.sr_name + '/" target="_blank">' + response.sr_name + '</a></div>';

            $(srLink).hide().appendTo(".recommendationsCol").fadeIn('slow');
        });

        event.preventDefault;
    });
});

由于

1 个答案:

答案 0 :(得分:1)

你的event.preventDefault中有一个拼写错误,它应该是

event.preventDefault();

另外,检查$ .getJSON的正确用法,$ .each应该在$ .getJSON成功回调中。

例如

$.getJSON("ajax/test.json", function(data) {
    // $.each() here.
});