JSON解码不适用于PHP

时间:2015-05-07 06:47:40

标签: javascript php ajax json

我有一个PHP 5.4.3版本的WAMP服务器。我用下面的php文件编写的JSON数据是代码(submit.php)。

$username = 'User';
$comment = 'Test comment';
$date = date("Y-m-d G:i:s");  
$image = '/img/sephiroth.png';

  $return = array(
  'username'=> $username,
  'comment' => $comment,
  'date' => $date,
  'image' => $image  );
  echo json_encode($return); 

现在我有一个javascript文件(script.js)。

$.ajax({
            type: "POST",
            url: "submit.php",
            data: dataString,
            cache: false,
            success: function(result){
                    alert(result); //It is showing all the JSON data.
                    $value = result;
                    $data = json_decode($value,true);
                    alert($data);
                        }
           });

我想分别解码所有JSON数据。例如用户名,评论,日期,图像。所以,我可以在网页上显示它们,目前所有数据都汇集在一起​​。我尝试了多次多个选项(php数组或result.username或结果['用户名'],但没有运气。

现在我遇到了错误。

ReferenceError: json_decode is not defined
    $data = json_decode($value,true);

5 个答案:

答案 0 :(得分:4)

你不能在JS中使用json_decode json_decode是PHP函数

使用jQuery.parseJSON(json_data)来解析您的json数据;

jQuery.parseJSON( result );

更改

$value = result;
$data = json_decode($value,true);

致:

jQuery.parseJSON( result );

http://api.jquery.com/jQuery.parseJSON/

答案 1 :(得分:2)

尝试以下方法:

success: function(result){
         var res = $.parseJSON(result);
         var data = [res.username, res.comment, res.date, res.image]; // Array of the received response
}

这样您就可以获得所需的输出

答案 2 :(得分:1)

尝试如下:

$.ajax({
        type: "POST",
        url: "submit.php",
        data: dataString,
        cache: false,
        success: function(result){
                alert(result); //It is showing all the JSON data.
                jQuery.parseJSON( result );
                    }
       });

答案 3 :(得分:0)

使用ajax的dataType选项并将其值设置为json。 然后,您可以访问响应['username']

答案 4 :(得分:0)

我的例子:

服务器端返回final ViewHolder perItemHolder = holder; holder.textQtyIncrease.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(p == 9) { Toast.makeText(context, "You have reached to maximum order quantity", Toast.LENGTH_LONG).show(); return ; } else { p = p+1; perItemHolder.textViewQuantity.setText(""+p); totalPrice = p * cart.getPrice(); cart.setTotal(totalPrice); perItemHolder.textViewTotal.setText("$ " + df.format(cart.getTotal())); } } });

你可以像javascript数组一样处理json,不需要解码它。 下面的{"username":"xxxxx","data":"xxxxxxxxxxxx and more"}本身就是结果数组。

data

并确保php发送了标头 $.ajax({ type: "POST", url: "submit.php", cache: false, success: function(data){ var username = data['username']; var data = data['data']; //and so on } });

Content-Type:application/json