2012-02-05 76 views
1

在今天早些时候的帖子中,答案让我想不起使用JSON提要填充页面元素的路线。了解jquery getjson方法

学习新东西!

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

我已经成功地创建了作为GET方法添加参数的url,但我找不到POST方法的示例 - 参数应作为可选参数。这里是我迄今为止...

function loadData(index) { 
     alert(index);//debug 
      $.getJSON('loadJSONholeData.php' , 
       {hole: index} , 
       function(data) { 

我发现了Twitter的饲料,显示像选项参数的例子:“猫”,却找不到一个选项,其中的值是一个变量。

我不明白如何使用参数 - 我在哪里出错。欣赏这可能是一个基本问题,但我正在学习。

感谢

更新: 我每次修订下面的响应代码,并且使用了建议通过之后的参数,但是接收PHP代码是不读书的POST参数,只是返回默认值查询。

我甚至使用静态值1作为一个值和一个字符串,但没有喜悦。

这是我接受的PHP代码访问POST值:

$hole = 3; 
if (isset($_POST['hole'])) { 
$hole = $_POST['hole']; 
} 

我缺少的东西在这里的基本。 'index'中的值肯定存在,因为它显示在调试中并且正在返回JSON数据)(但是是默认值)。我可以回到我的GET方法,但想看看这个工作!

谢谢

更新:成功!

我用修改后的代码进一步玩了一下。我从代码中删除了内容类型参数,它现在都可以工作,PHP返回正确的查询。

我假设通过指定contentType中的JSON类型,它以不同的方式将PHP参数以一种不同的方式传递给PHP,并且以其他方式期待它?

勇往直前和向上 - 感谢

回答

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. 
      } 
     }); 
+0

我添加了一个更新,尝试了这种方法,但POST参数似乎不被传递 – Ray 2012-02-05 18:07:22

+0

我不熟悉PHP代码(我进入C#),但它看起来像你试图访问表单的帖子值。这些值不在那里。你的服务器端方法应该有一个名为'hole'的参数,然后访问参数中的值。说得通? C#中的等价代码是public static void loadJSONholeData(string hole){// hole具有index的值。 }' – tempid 2012-02-05 18:20:03

+0

排序 - 我虽然只是设法让它工作 - 我已经更新了我的职位 - 谢谢你的帮助 – Ray 2012-02-05 18:22:24

1

参数对象中的每个键/值对都将表示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”下)。