Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
Can';t将JSON字符串从PHP文件传输到Jquery中的getJSON方法_Php_Jquery_Ajax_Json - Fatal编程技术网

Can';t将JSON字符串从PHP文件传输到Jquery中的getJSON方法

Can';t将JSON字符串从PHP文件传输到Jquery中的getJSON方法,php,jquery,ajax,json,Php,Jquery,Ajax,Json,这就是我想要的,在名为input.PHP的PHP页面上,用户通过html表单提交用户名。这将存储到MYSQL数据库中。有一个名为results.php的页面,它查询MYSQL数据库中的所有用户名 我需要做的是,每隔5秒左右,一些jquery代码(可能是getJSON)就会从results.php(同一页面)中获得一个JSON字符串。此JSON字符串可能会随着用户在input.php页面上添加更多用户名而更新 这是input.php文件 <form name="input"

这就是我想要的,在名为input.PHP的PHP页面上,用户通过html表单提交用户名。这将存储到MYSQL数据库中。有一个名为results.php的页面,它查询MYSQL数据库中的所有用户名

我需要做的是,每隔5秒左右,一些jquery代码(可能是getJSON)就会从results.php(同一页面)中获得一个JSON字符串。此JSON字符串可能会随着用户在input.php页面上添加更多用户名而更新

这是input.php文件

        <form name="input" action="<?php $_SERVER['PHP_SELF']?>" method="post">
        Usernames: <input type="text" name="usernames" />
         <input type="submit" value="Submit" name="submit" />
    </form>

    <?php

    if(isset($_POST['submit'])) {
        $link = mysql_connect('', '', '');
        if (!$link) {
            die('Could not connect: ' . mysql_error());
        }

        $db_selected = mysql_select_db('', $link);
        if (!$db_selected) {
            die ('Can\'t use  : ' . mysql_error());
        }

        $result = mysql_query("INSERT INTO users(user_name)             VALUES('".$_POST['usernames']."')");
        if (!$result) {
            die('Invalid query: ' . mysql_error());
        }


    }
    ?>

如果您想使用results.php同时执行这两项任务(即显示用户名和响应JSON查询),则需要将文件拆分为两个分支。使用_GET变量指定哪个分支。例如,您可以在results.php?json=true上运行.getJSON,而不仅仅是results.php。现在,inside results.php中有一个if分支,用于检查这个_GET变量是否存在,如果存在,则获取所需的数据,以json编码的字符串进行回显,然后退出()。在results.php中执行所有这些操作之前,甚至在
标记之前

编辑以提供代码:(根据OP的问题编辑)


$.getJSON(“http://localhost/test/results.php?json=true,函数(json){
警报(“JSON数据:”+JSON);
});

您可以使用setTimeout

   setTimeout( function() {
    getData()
  }, 5000);

 function getData() {
    $.getJSON("http://localhost/test/results.php", function(json){
        alert("JSON Data: " + json);
    });
    });
   }

您需要的是AJAX,您需要javascript来完成它。如果您想要一种简洁易懂的方式,我建议您使用jQuery。您的代码如下所示:

setTimeout(function(){
    $.post("results.php",function(result){
        //Do somthing with the result Array or object
    },"json");
},5000);
此外,由于您只获取1条数据“usernames”,因此应该返回数组json,而不是对象json

["matt","matt","peter","jim","sam"]
对于您和您的用户来说,这应该需要更少的带宽


注意:您应该从results.php中删除jquery脚本,唯一应该重新运行的是json本身。如果有任何疑问,请询问

是否可以用您所说的内容编辑我的代码以使其更清晰?很抱歉,我很冒昧,但除非我在代码中看到它,否则它会变得更加清晰。现在运行页面时,我会收到一个带有JSON数据的警报:[object object],[object object],[object object],[object object],[object object]。我认为它是可行的,然后我需要一些jquery功能来将其显示为实际的数据,然后我可以用html显示。很抱歉,我不得不走出去一点-是的,它可以工作。为了更仔细地了解到底发生了什么,我建议在Chrome或Firebug中加载页面,查看网络活动选项卡,检查HTTP请求、响应标题、实际响应等。
setTimeout
是一个本机函数,而不是jQuery函数。
setTimeout(function(){
    $.post("results.php",function(result){
        //Do somthing with the result Array or object
    },"json");
},5000);
["matt","matt","peter","jim","sam"]