我找到了这个: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对象?如果它不正确错误在哪里?
由于
答案 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");
}
}
});