Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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
Javascript Can';t将数据从PHP传递到AJAX_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript Can';t将数据从PHP传递到AJAX

Javascript Can';t将数据从PHP传递到AJAX,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我有一个html输入框。输入通过ajax搜索数据库,并在前端返回结果。问题是我没有从PHP得到结果。我不知道我做错了什么,所以我希望你们能更好地理解我 HTML PHP 及 现在的问题是如何操作js文件来处理返回数组。我试了一下,但没有成功: result = xmlDocumentElement.firstChild.data; if (result['found'] != null) { document.getElementById

我有一个html输入框。输入通过
ajax
搜索数据库,并在前端返回结果。问题是我没有从PHP得到结果。我不知道我做错了什么,所以我希望你们能更好地理解我

HTML

PHP

现在的问题是如何操作js文件来处理返回数组。我试了一下,但没有成功:

result = xmlDocumentElement.firstChild.data;

            if (result['found'] != null) {
                document.getElementById('Label-Result').innerHTML = result['msg'];
                document.getElementById('UserNameSearchResult').innerHTML = result['found'];
                $('#add-person-btn').removeAttr("disabled");
            }
            else {
                document.getElementById('Label-Result').innerHTML = result['msg'];
            }
**更新2工作JS**

我知道如何从PHP检索数据。

xmlResponse = xmlHttp.responseXML;
            xmlDocumentElement = xmlResponse.documentElement;
            var result = JSON.parse(xmlDocumentElement.firstChild.data);

            if (result['found'] != null) {
                document.getElementById('Label-Result').innerHTML = result['msg'];
                document.getElementById('UserNameSearchResult').innerHTML = result['found'];
                $('#add-person-btn').removeAttr("disabled");
            }
            else {
                document.getElementById('Label-Result').innerHTML = result['msg'];
            }
现在所有的代码都工作了!非常感谢大家! +向你们所有人致敬

四件事:

  • send(null)
    的用法似乎不正确,只是不要在其中传递null
  • 第二种是超时方法。您可以在回调函数中调用它,或者在函数调用中使用名称而不是字符串,而不是使用它的使用方式
  • 删除属性的用法也是错误的。由于您提供了第二个参数,它当前正在使用set方法。remove attribute方法仅采用属性名称
  • 我建议您为
    application/json
    设置一个头,并使用
    json\u encode()
    方法返回数据

  • 对于打印数组,您可以使用,也可以通过其他方式将数组转换为字符串。

    如果我们忽略了房间里的白象,而忽略了mysql_*函数的使用,那么使用一种稍微不同的方法

    <?php
        session_start();
    
        define('DB_HOST', 'mysql6.000webhost.com');
        define('DB_USER', '');
        define('DB_PASSWORD', '');
        define('DB_DATABASE', '');
    
    
        $dom=new DOMDocument('1.0','utf-8');
        $root=$dom->createElement('response');
        $dom->appendChild( $root );     
    
        if( $_SERVER['REQUEST_METHOD']=='GET' && isset( $_GET['email'] ) ){
    
    
            /* Basic filtering IF mysql_* functions are used! */
            $email = trim( strip_tags( filter_input( INPUT_GET, 'email', FILTER_SANITIZE_EMAIL ) ) );
    
            $conn = mysql_connect( DB_HOST, DB_USER, DB_PASSWORD );
                    mysql_select_db( DB_DATABASE, $conn ) or die('error: database connection failed');
    
            /* By the looks of the original there should be no need for two queries and then an array lookup */
            $result = mysql_query("SELECT `UserName` FROM `Users` WHERE `UserEmail` = '".$email."';");
    
            /* If there are results, add nodes to the dom object */
            if( mysql_num_rows( $result ) > 0 ){
                while( $rs=mysql_fetch_object( $result ) ){
                    $root->appendChild( $dom->createElement( 'user', $rs->UserName ) );
                }
            } else {
                /* Otherwise add error message */
                $root->appendChild( $dom->createElement( 'error', 'We couldn\'t find any results!' ) );
            }
        }
    
        /* Send the xml back to the js client */
        header('Content-Type: text/xml');
        $xml=$dom->saveXML();
        $dom=null;
    
        exit( $xml );
    ?>
    
    saveXML();
    $dom=null;
    退出($xml);
    ?>
    
    你不能用
    echo
    …@Lipsyor打印数组,真的吗?正确的方法是什么?JSON?怎么做?好吧,但这无助于解决实际问题。但是谢谢!:)如果我理解,我使用
    echo-json\u-encode($returnRes)在我的PHP中,但我如何处理js中的返回值?我想到了它,但我如何管理js中的数据?因为,如果你看到的话,我用它们来更新我的html文件。JSON在Javascript中非常容易处理。请参阅Yeap,但我不知道这些值是否正确地传递给
    $returnRes
    。这取决于您定义为“正确”的内容以及应用程序固有的内容。老实说,我不知道我们可以如何帮助您:)您能在浏览器中调试xhr响应并告诉我们返回了什么吗?我想你现在是正确的印刷品了,非常感谢你。我发现PHP(正如您在我的更新中所看到的)问题在于如何在js中使用返回数据。
     header('Content-Type: application/json');
    
    if (in_array($email, $UserInfo)) {
      $result = mysql_query("SELECT UserName FROM Users WHERE UserEmail = '".$email."'");
      $row = mysql_fetch_row($result);
      echo json_encode(array( 'found' => $row[0], 'msg' => "We found results"));
    }
    else {
      echo json_encode(array( 'found' => null, 'msg' => "We couldn't find results"));
    }
    
    result = xmlDocumentElement.firstChild.data;
    
                if (result['found'] != null) {
                    document.getElementById('Label-Result').innerHTML = result['msg'];
                    document.getElementById('UserNameSearchResult').innerHTML = result['found'];
                    $('#add-person-btn').removeAttr("disabled");
                }
                else {
                    document.getElementById('Label-Result').innerHTML = result['msg'];
                }
    
    xmlResponse = xmlHttp.responseXML;
                xmlDocumentElement = xmlResponse.documentElement;
                var result = JSON.parse(xmlDocumentElement.firstChild.data);
    
                if (result['found'] != null) {
                    document.getElementById('Label-Result').innerHTML = result['msg'];
                    document.getElementById('UserNameSearchResult').innerHTML = result['found'];
                    $('#add-person-btn').removeAttr("disabled");
                }
                else {
                    document.getElementById('Label-Result').innerHTML = result['msg'];
                }
    
    <?php
        session_start();
    
        define('DB_HOST', 'mysql6.000webhost.com');
        define('DB_USER', '');
        define('DB_PASSWORD', '');
        define('DB_DATABASE', '');
    
    
        $dom=new DOMDocument('1.0','utf-8');
        $root=$dom->createElement('response');
        $dom->appendChild( $root );     
    
        if( $_SERVER['REQUEST_METHOD']=='GET' && isset( $_GET['email'] ) ){
    
    
            /* Basic filtering IF mysql_* functions are used! */
            $email = trim( strip_tags( filter_input( INPUT_GET, 'email', FILTER_SANITIZE_EMAIL ) ) );
    
            $conn = mysql_connect( DB_HOST, DB_USER, DB_PASSWORD );
                    mysql_select_db( DB_DATABASE, $conn ) or die('error: database connection failed');
    
            /* By the looks of the original there should be no need for two queries and then an array lookup */
            $result = mysql_query("SELECT `UserName` FROM `Users` WHERE `UserEmail` = '".$email."';");
    
            /* If there are results, add nodes to the dom object */
            if( mysql_num_rows( $result ) > 0 ){
                while( $rs=mysql_fetch_object( $result ) ){
                    $root->appendChild( $dom->createElement( 'user', $rs->UserName ) );
                }
            } else {
                /* Otherwise add error message */
                $root->appendChild( $dom->createElement( 'error', 'We couldn\'t find any results!' ) );
            }
        }
    
        /* Send the xml back to the js client */
        header('Content-Type: text/xml');
        $xml=$dom->saveXML();
        $dom=null;
    
        exit( $xml );
    ?>