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