You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ajax+JSON实现用户名查重功能遇问题求助

问题分析与解决方案

你遇到的问题主要出在**$.each的使用方式和匹配逻辑的顺序**上,我来帮你一步步修正:

核心问题点

  • $.each参数理解错误:
    你的JSON数组里每个元素是一个对象(比如{"korisnicko_ime":"darbranis"}),所以$.each遍历的时候,回调函数的第一个参数是数组索引,第二个参数是当前的用户对象,而不是你写的korisnicko_ime和value。你当前的value其实是整个对象,和输入的kor_ime字符串永远不会相等,这是判断失效的关键原因。

  • 提示更新逻辑错误:
    你在循环里每遍历一个用户就更新提示,哪怕前面已经找到匹配的用户,后面不匹配的用户会把提示又改成“不存在”——最终只要最后一个用户不匹配,就会显示错误提示。

修正后的代码

$("#k_ime").on('focusout', function() {
    var kor_ime = $(this).val();
    // 先初始化标记,默认用户名不存在
    var postoji = false;

    $.ajax({
        url: 'http://barka.foi.hr/WebDiP/2017_projekti/WebDiP2017x021/popis_korisnika.php',
        type: 'GET',
        dataType: 'json',
        success: function (json) {
            // 遍历JSON数组里的每个用户对象
            $.each(json, function (index, korisnik) {
                // 取对象里的korisnicko_ime属性和输入值比较
                if (korisnik.korisnicko_ime === kor_ime) {
                    postoji = true;
                    return false; // 找到匹配项后跳出循环,不用继续遍历
                }
            });

            // 遍历结束后根据标记显示提示
            if (postoji) {
                $("#poruke").text("Korisnik postoji!").show();
                $("#greske").hide();
                console.log("Korisnik postoji!");
            } else {
                $("#greske").text("Korisnik ne postoji!").show();
                $("#poruke").hide();
                console.log("Korisnik ne postoji");
            }
            console.log(kor_ime);
        },
        // 补充错误处理,排查请求失败的情况
        error: function(xhr, status, error) {
            $("#greske").text("Greška prilikom provjere korisnika!").show();
            console.log("AJAX greška: " + error);
        }
    });
});

关键修改说明

  1. 补上了focusout事件的绑定逻辑(你之前的代码没写这部分,确保触发逻辑正确)。
  2. 新增postoji标记变量,先默认用户名不存在,遍历中找到匹配项就把标记设为true并跳出循环,避免多余遍历。
  3. 遍历的时候正确获取用户对象的korisnicko_ime属性进行比较,修正了之前的参数错误。
  4. 把提示更新放在遍历结束后,彻底解决了“匹配项被后续不匹配项覆盖提示”的问题。
  5. 增加了AJAX错误处理,方便排查请求失败的情况(比如跨域、文件路径错误等)。
  6. 用show()和hide()控制提示元素的显示,避免两个提示同时出现。

这样修改后,就能正确判断用户名是否存在了~

内容的提问来源于stack exchange,提问作者Darko Darac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:20:43