Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用ajax检查用户名+;json_Php_Json_Ajax - Fatal编程技术网

Php 使用ajax检查用户名+;json

Php 使用ajax检查用户名+;json,php,json,ajax,Php,Json,Ajax,我制作了一个php文件,其中包含json格式的用户名 [ {"korisnicko_ime":"darbranis"}, {"korisnicko_ime":"markrc"}, {"korisnicko_ime":"leoluk"}, {"korisnicko_ime":"borbau"}, {"korisnicko_ime":"ivavad"}, {"korisnicko_ime":"andtikv"}, {"korisnicko_im

我制作了一个php文件,其中包含json格式的用户名

[
    {"korisnicko_ime":"darbranis"},
    {"korisnicko_ime":"markrc"},
    {"korisnicko_ime":"leoluk"},
    {"korisnicko_ime":"borbau"},
    {"korisnicko_ime":"ivavad"},
    {"korisnicko_ime":"andtikv"},
    {"korisnicko_ime":"nikohras"},
    {"korisnicko_ime":"marbranis"},
    {"korisnicko_ime":"ratkolev"},
    {"korisnicko_ime":"antobrk"}
]
现在,我想使用ajax+json检查数据库中是否已经存在用户名,该用户名应如下所示:

    var kor_ime = $("#k_ime").val();

    $.ajax({
        url: 'http://barka.foi.hr/WebDiP/2017_projekti/WebDiP2017x021/popis_korisnika.php',
        type: 'GET',
        dataType: 'json',
        success: function (json) {
            $.each(json, function (korisnicko_ime, value) {
                if (value === kor_ime) {
                    $("#poruke").text("Korisnik postoji!");
                    console.log("Korisnik postoji!");
                } else {
                    $("#greske").text("Korisnik ne postoji!");
                    console.log("Korisnik ne postoji");
                }

                console.log(kor_ime);
            });
        }
    });

现在,当我集中注意力时,每次都会收到用户名不存在的消息。我需要帮助。

您的javascript中有两个错误:

第一个:您希望变量
value
是一个类似
“darbranis”
的字符串。但是,
$。每个
都会给出第一个参数作为索引(
0
1
2
,在这种情况下依此类推,因为
json
是一个规则数组),并且作为第二个参数的值(
{“korisnicko ime”:“darbranis”}
,用于第一个条目)

因此:

应该是这样的:

$.each(json, function (arrayidx, arrayvalue) {
    if (arrayvalue.korisnicko_ime === kor_ime) {
第二个错误:
$(“#poruke”)
如果json中有一个用户名等于
kor\u ime
,则会写入<如果json中的用户名不等于
kor\u ime
,则会写入code>$(“#greske”)。由于json中有许多用户名不等于
kor_ime
$(“#greske”)
。我假设“Korisnik ne postoji!”翻译成“未找到用户”,所以您很可能不喜欢这种行为。要解决此问题,请执行以下操作:

// Initialize userfound as false
var userfound = false;
$.each(json, function (arrayidx, arrayvalue) {
    if (arrayvalue.korisnicko_ime === kor_ime) {
        // If there is one entry with the correct username, the user is found
        userfound = true;
    }
});

// After the each check if user is found (one match) or not 
// found (no match at all, thus still at initial value false)
if (userfound) {
    $("#poruke").text("Korisnik postoji!");
    console.log("Korisnik postoji!");
} else {
    $("#greske").text("Korisnik ne postoji!");
    console.log("Korisnik ne postoji");
}
在下面的代码片段中完成演示:

var kor_ime='markrc';
var json=[
{“korisnicko_ime”:“darbranis”},
{“korisnicko_ime”:“markrc”},
{“korisnicko_ime”:“leoluk”}
];
var userfound=false;
$.each(json,函数(arrayidx,arrayvalue){
if(arrayvalue.korisnicko_ime===kor_ime){
userfound=true;
}
});
if(userfound){
$(“#poruke”).text(“Korisnik postoji!”);
log(“Korisnik postoji!”);
}否则{
$(“#greske”).text(“Korisnik ne postoji!”);
console.log(“Korisnik ne postoji”);
}

更改如下:

$.each(json, function (korisnicko_ime, value) {
            if (value === kor_ime) {
                $("#poruke").text("Korisnik postoji!");
                console.log("Korisnik postoji!");
            } else {
                $("#greske").text("Korisnik ne postoji!");
                console.log("Korisnik ne postoji");
            }
为此:

json.forEach(function (value) {

    if (value.korisnicko_ime == kor_ime) {
                $("#poruke").text("Korisnik postoji!");
                //console.log("yes");
       } else {
                $("#greske").text("Korisnik ne postoji!");
                //console.log("no");
       }
 });

显然,您的代码需要一个带有用户名的数组,但这不是您得到的结果。您将获得一个对象数组,其中包含一个带有用户名的属性
korisnicko_ime

与其检查
if(value==kor\u-ime)
不如检查
if(value.korisnicko\u-ime==kor\u-ime)

此外,在确定用户名不存在之前,您没有查看所有条目。对于用户名不匹配的每个条目,对不存在的用户执行操作


但别介意,为什么f向未经验证的用户提供系统上所有可能登录的列表?你知道任何人都能看到那张名单吗?这是一个严重的安全漏洞。不要在客户端验证敏感信息。

您确实需要帮助!你的php代码在哪里?我知道php代码,ajax调用是个问题。试着用console.log检查你的值:$。每个(json,函数(korisnicko_ime,value){console.log(korisnicko_ime,value);});多么伟大的上帝啊;谢谢,一切正常,就像我想要的,但当我输入一个不存在的名称时,它表示用户存在
json.forEach(function (value) {

    if (value.korisnicko_ime == kor_ime) {
                $("#poruke").text("Korisnik postoji!");
                //console.log("yes");
       } else {
                $("#greske").text("Korisnik ne postoji!");
                //console.log("no");
       }
 });