Jquery使用文字值,但不是我的PHP从$ .post返回JSON数据

时间:2011-03-02 01:24:25

标签: jquery json

我正在使用jQuery的$ .post从查询中获取值,并(尝试)使用这些值填充表单。 populate插件需要一个JSON对象。为了测试我的成功回调,我提醒并显示数据 - 这对我来说看起来像是有效的JSON,但插件不会加载表单字段。但是,如果我替换文字值,例如{“cust_id”:“65”},它有效。 有什么问题? 谢谢。

.....这是客户方:

 <script type="text/javascript">

    $(".button").click(function () {        

      var suite = $("input#suite_no").val();

      $.post("get_custrec.php",
        { suite_no: suite },
        function(data){
           data = data.substring(1, data.length-1);
           $('#output').html(data);
           alert("Data: " + data);
           $('#custForm').populate(data);
         }
       );
       return false;
    });
    </script>

.......我的服务器(php)代码:

  $result = mysql_query($sql);

  $arr = array();
  while($obj = mysql_fetch_object($result)) {
    $arr[] = $obj;
  }
  echo json_encode($arr); 

2 个答案:

答案 0 :(得分:1)

$.post("get_custrec.php",
    { suite_no: suite },
    function(data){
       data = data.substring(1, data.length-1);
       $('#output').html(data);
       alert("Data: " + data);
       $('#custForm').populate(data);
     }, 'json' //just need to add this ;)
   );

答案 1 :(得分:1)

如果你没有指定将要返回的dataType,jQuery会通过查看响应的MIME类型(例如HTTP Content-Type标题)来猜测它。由于您看起来不像是设置标题,因此您需要:

  • 设置正确的HTTP标头:header("Content-Type: application/json"); 和/或
  • 告诉jQuery dataType是什么,还有$.post()的另一个参数:

    $.post('get_custrec.php', {...}, function (data) {...}, 'json')

任何一个都足够了;使用两者都不会受到伤害。