编码为json对象并通过ajax发送

时间:2011-12-31 11:30:53

标签: php jquery json

我找到了这个:http://code.google.com/p/jquery-json,一个模拟json_encode PHP函数的插件。

所以我尝试了这个:

var datasend = {};
    datasend['name'] = $(".chat_username").val();
    datasend['message'] = $(".chat_text").val();
    encoded_send = $.toJSON( datasend );
    $.ajax({
      type: "POST",
      url: "/apps/chat_write",
      data: {send_data: encoded_send },
      success: function(response){
        if(response!="OK"){
            alert("Παρουσιάστηκε πρόβλημα.Κάντε ανανέωση την σελίδα ή προσπαθήστε ξανά αργότερα.");
        }else{
            $(".chat_text").val("");
            $(".chat_count").val("0/100");
        }
      }
    });

第一个问题?我有这个

    $.ajax({
      type: "POST",
      url: "/apps/chat_write",
      data: "name="+escape($(".chat_username").val())+"&message="+escape($(".chat_text").val()),
      success: function(response){
        if(response!="OK"){
            alert("Παρουσιάστηκε πρόβλημα.Κάντε ανανέωση την σελίδα ή προσπαθήστε ξανά αργότερα.");
        }else{
            $(".chat_text").val("");
            $(".chat_count").val("0/100");
        }
      }
    });
    return false;
});

我对希腊字符有问题.. 所以我决定使用json对象 如果此代码正确,我如何从PHP解析JSON对象?如果它不正确错误在哪里?

由于

1 个答案:

答案 0 :(得分:1)

(在我继续你的功能之前......)
你似乎误解了JSON的目的。在将数据传输到服务器时,没有必要用JSON字符串替换数据。一种更简单的方法是通过data添加参数,并通过$_POST检索它们。

示例:

$.ajax({
    type: "POST",
    url: "/apps/chat_write",
    data: {
        name: $(".chat_username").val(),
        message: $(".chat_text").val()
    },
    dataType: "json", /* This parameter is ONLY used at the response */
    success: function(response){
        //response is a deserialized JSON string
    }
});

简单的PHP示例:

<?php
    header('Content-Type: application/json');
    $example = array("what" => "This");
    echo json_encode($example); //Echos: {"what":"This"}
?>

JSON应该在服务器响应中使用。可以使用json_encode序列化PHP对象。确保在发送任何输出之前使用header('Content-Type: application/json');

(如果您仍希望在发送前对数据进行JSON编码)
使用json_decode PHP函数反序列化JSON字符串。

您当前的代码必须修复。

var datasend = {};
datasend['name'] = $(".chat_username").val();
datasend['message'] = $(".chat_text").val();
var encoded_send = $.toJSON( datasend );
$.ajax({
  type: "POST",
  url: "/apps/chat_write",
  data: {send_data: encoded_send },
  dataType: "json", /* Can be removed if the RESPONSE is not JSON*/
  success: function(response){
    if(response!="OK"){
        alert("Παρουσιάστηκε πρόβλημα.Κάντε ανανέωση την σελίδα ή προσπαθήστε ξανά αργότερα.");
    }else{
        $(".chat_text").val("");
        $(".chat_count").val("0/100");
    }
  }
});