在今天的早期帖子中,答案让我沿着使用JSON提要填充页面中元素的路线。
要学习新东西!!
JSON数据是从PHP脚本创建的,该脚本从Mysql数据库中检索数据。 php脚本检索一个特定的记录,我需要通过getJson调用传递给php脚本。
我已经成功创建了带有作为GET方法添加的参数的url但是我找不到POST方法的示例 - 参数应该作为可选参数。这是我到目前为止所拥有的......
function loadData(index) {
alert(index);//debug
$.getJSON('loadJSONholeData.php' ,
{hole: index} ,
function(data) {
我找到了一个推文示例,其中显示了一个参数,例如选项:“cat”,但找不到值在变量中的选项。
我不明白如何使用参数 - 我哪里出错了。欣赏这可能是一个根本问题,但我正在学习。
由于
更新: 我已根据下面的响应修改了代码并使用了两个建议来传递POST参数,但是接收的PHP代码没有读取POST参数,只返回默认的查询值。
我甚至将静态值1用作值和字符串但没有快乐。
这是我接收访问POST值的PHP代码:
$hole = 3;
if (isset($_POST['hole'])) {
$hole = $_POST['hole'];
}
我在这里遗漏了一些基本的东西。 'index'中的值肯定存在,因为它在调试中显示并且正在返回JSON数据)(但是默认值)。我可以回到我的GET方法,但希望看到这个工作!!
由于
更新:成功!!
我用修改过的代码进一步玩了。我从代码中删除了内容类型参数,现在一切正常,PHP正在返回正确的查询。
我假设通过在contentType中指定JSON类型,它以不同于PHP的方式传递POST参数,而这种方式需要它以更好的方式?
向上和向上 - 谢谢
答案 0 :(得分:4)
$ .getJSON()方法执行HTTP GET而不执行POST。试试这样的事情 -
$.ajax({
url: 'loadJSONholeData.php',
data: JSON.stringify({hole: index }),
type: 'POST',
contentType: 'application/json;',
dataType: 'json',
success: function (result) {
//(result.d) has your data.
}
});
答案 1 :(得分:1)
arguments对象中的每个键/值对都代表HTTP POST中的参数。您可以将变量用作值,但我相信它们将转换为字符串,因此最好自己进行转换(因此您可以确保它们具有正确的格式)。一个简单的例子:
var dynamicValue = foo();
$.post('my/url', { var1:"static value", var2:dynamicValue }, function(data) {
// Your callback; the format of "data" will depend on the 4th parameter to post...
}, "json"); // ...in this case, json
现在,如果您的服务器需要json编码的对象/列表,您可以使用JSON.stringify
传递它:
function foo() {
return JSON.stringify({ my:"object" });
}
JSON
应该在大多数现代浏览器中都可用,如果不是,你可以得到here(json2.js,在“JavaScript”下)。