Php 理解jquery-getjson方法

Php 理解jquery-getjson方法,php,jquery,json,Php,Jquery,Json,在今天早些时候的一篇文章中,答案引导我使用JSON提要填充页面中的元素 有新东西要学 JSON数据是从PHP脚本创建的,该脚本从Mysql数据库检索数据。php脚本检索我需要通过getJson调用传递给php脚本的特定记录 我已经成功地创建了带有作为GET方法添加的参数的url,但是我找不到POST方法的示例-这些参数应该作为可选参数。这是我到目前为止所拥有的 function loadData(index) { alert(index);//debug

在今天早些时候的一篇文章中,答案引导我使用JSON提要填充页面中的元素

有新东西要学

JSON数据是从PHP脚本创建的,该脚本从Mysql数据库检索数据。php脚本检索我需要通过getJson调用传递给php脚本的特定记录

我已经成功地创建了带有作为GET方法添加的参数的url,但是我找不到POST方法的示例-这些参数应该作为可选参数。这是我到目前为止所拥有的

function loadData(index) {
        alert(index);//debug
            $.getJSON('loadJSONholeData.php' , 
                {hole: index} ,
                function(data) {
我找到了一个twitter提要的例子,它显示了一个类似选项“cat”的参数,但找不到一个值在变量中的选项

我不知道如何使用这些参数——我哪里出了问题。认识到这可能是一个基本问题,但我正在学习

谢谢

更新: 我已经根据下面的响应修改了代码,并使用这两个建议来传递POST参数,但是接收的PHP代码没有读取POST参数,只返回默认查询值

我甚至将静态值1用作值和字符串,但没有乐趣

下面是我接收的访问POST值的PHP代码:

$hole = 3;
if (isset($_POST['hole'])) {
$hole = $_POST['hole'];
}
我缺少一些基本的东西。“index”中的值肯定存在,正如它在调试中所显示的那样,并且正在返回JSON数据(但为默认值)。我可以回到我的GET方法,但希望看到这项工作

谢谢

更新:成功

我进一步研究了修改后的代码。我从代码中删除了content-type参数,现在一切正常了,PHP正在返回正确的查询

然后,我假设通过在contentType中指定JSON类型,它会以不同的方式将POST参数传递给PHP,而PHP希望以另一种方式传递它

向前和向上-谢谢

方法$.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.
            }
        });
$.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.
            }
        });

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
应该在大多数现代浏览器中都可用,如果不可用,您可以获得它(json2.js,在“JavaScript”下)。

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
应该在大多数现代浏览器中都可用,如果不可用,您可以获得它(json2.js,在“JavaScript”下)。

我添加了一个更新,尝试了这种方法,但POST参数似乎没有被传递。我不熟悉PHP代码(我喜欢C),但看起来您试图从表单的POST值访问这些值。这些值不在其中。服务器端方法应该有一个同名的参数
hole
,然后从该参数访问值。有道理吗?C#中的等效代码是
public static void loadJSONholeData(string-hole){//hole具有index的值。}
某种程度上-虽然我刚刚设法让它工作-我已经用我所做的更新了我的帖子-感谢帮助我添加了一个更新,尝试了这种方法,但是POST参数似乎没有被传递。我不熟悉PHP代码(我对C#很感兴趣),但看起来您正在尝试从表单的POST值访问值。这些值不在其中。服务器端方法应该有一个同名的参数
hole
,然后从该参数访问值。有道理吗?C#中的等效代码是
publicstaticvoidloadjsonholedata(stringhole){//hole具有index的值。}
某种程度上-虽然我刚刚设法让它工作了-我已经用我所做的更新了我的帖子-谢谢你的帮助