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

标签 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 对象?如果不正确,错误在哪里?

谢谢

最佳答案

(在我继续你的功能之前..)
您似乎误解了 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反序列化 JSON 字符串的 PHP 函数。

不过,您当前的代码必须修复。

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");
    }
  }
});

关于php - 编码为 json 对象并通过 ajax 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8687860/

相关文章:

php - 在 Yii2 中自动登录多个域

php - 不是如何在 Php 中创建 session 超时,而是在哪里?

javascript - 由于 php 结果更改 html 中的类和文本

Javascript 代码无法正常工作并为另一部分代码带来值(value)

ios - swifty json 经常崩溃

jquery - 添加 MVC3 不显眼的验证 (addMinMax)

javascript - 有没有可以直接更新的动态数据库前端工具?

javascript - 确定无限旋转传送带中哪些幻灯片靠近中心的算法?

javascript - D3.js - 从 JSON 创建多环圆环图数据集

Java - Json 数组到 json 对象