0

我有一个概念的输入字段,当用户填写它时,他必须检查该概念是否存在。所以我做了一个检查按钮,它使用 ajax 和 JavaScript 检查数据库以查看该概念是否存在。我的问题是使用 ajax 和 JavaScript 时出现此异常:

输入意外结束

JS:

var concept = document.getElementById('acConceptName').value;
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange=function(){
        if(xmlhttp.readyState==4 && xmlhttp.status==200){
            var isexisted = JSON.parse(xmlhttp.responseText);
            if(isexisted[0]==true){
                var errorMessage = document.getElementById('acSuggesConcepts');
                var p = document.createElement('p');
                p.innerHTML="this concept is already existed";
                errorMessage.appendChild(p);
                errorMessage.style.display="block";            
            }
        }
    }
    xmlhttp.open("GET","http://localhost/Mar7ba/Ontology/isExistedConcept/"+concept+"/TRUE",true);
    xmlhttp.send();

有什么例外,我该如何解决?

PHP:检查数据库的函数,我总是在其中返回 true

public function isExistedConcept($concpetName,$Ajax){
        if($Ajax==true){
            $results=true
             $d=array($results);
            return json_encode($d);
        }
 }

演示:http: //jsfiddle.net/Wiliam_Kinaan/s7Srx/2/

4

3 回答 3

2

在查看了一段时间的代码之后,可能会怀疑的一件事是您的 PHP。

您在 php 中的函数以return命令结尾。AJAX 调用实际上等待的是一些要发回的数据。return 命令只是将该值传递回最初调用该函数的实体。

尝试将您的函数更改echo为结果,而不是返回它。当您需要将结果输入另一个 PHP 函数时保存您的返回值,而不是在您向客户端返回数据时。
我只是把这个返回命令放在这里是为了便于阅读。

public function isExistedConcept($concpetName,$Ajax){
  if($Ajax==true){
    $results=true
    $d=array($results);
    echo json_encode($d);
  }
  return;
 }
于 2012-05-13T19:40:26.360 回答
0

试试这个:

public function isExistedConcept($concpetName,$Ajax) {
    if( $Ajax) return "1";
}
// This is a simplified version of what you're doing, but it returns "1" instead of "[true]"
// Now for the JS:

if( xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    var isexisted = xmlhttp.responseText == "1";
    if( isexisted) {...}

如果这不起作用,请尝试添加alert(xmlhttp.responseText)并查看您是否得到了除应有的内容之外的任何内容。

于 2012-05-13T18:41:57.510 回答
0

试试这个 :

var concept = document.getElementById('acConceptName').value;
    xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET","http://localhost/Mar7ba/Ontology/isExistedConcept/"+concept+"/TRUE",true);
    xmlhttp.onreadystatechange=function(){
        if(xmlhttp.readyState==4){
            if(xmlhttp.status==200){
                var isexisted = JSON.parse(xmlhttp.responseText);
                if(isexisted[0]==true){
                    var errorMessage = document.getElementById('acSuggesConcepts');
                    var p = document.createElement('p');
                    p.innerHTML="this concept is already existed";
                    errorMessage.appendChild(p);
                    errorMessage.style.display="block";            
                }
                    else{ 
                        console.log('error');
                    }
            }
        }
    }
    xmlhttp.send(null);
于 2012-05-13T18:49:12.080 回答