这些方法是否使用Ajax等效发送JSON?

时间:2017-09-11 19:48:44

标签: javascript jquery json ajax serialization

我继续看到使用JQuery Ajax通过HTTP请求发送JSON数据的两种不同方法,但我无法理解哪个是最正确的,哪些可能有一些缺点。

它们是否相同? 哪一种最正确,缺点较少?

第一种方法(隐式序列化)

  $.ajax({
        url: 'test.php',
        type : "POST", 
        dataType : 'json',
        data : JavaScriptObject, 
        success : function(result) {
           ...               
        },
        error: function() {
           ...
        }
    })
  

要发送到服务器的数据。它被转换为查询字符串if   还不是字符串...对象必须是键/值对

在这种情况下,在我看来,如果我有一个像

这样的Javascript对象
var a = {
    name: 'a',
    age: 10
 }

我之前不需要序列化它,因为JQuery会为我提供类似check=check2&radio=radio1的输出字符串。 可能我可以json_encode服务器端的查询字符串再次获得JSON数据。

SECOND APPROACH(serialize(); JSON.stringify(); serializeArray())

1.serialize()

 $.ajax({
            url: 'test.php',
            type : "POST", 
            dataType : 'json',
            data : $("#form").serialize(), 
            success : function(result) {
               ...               
            },
            error: function() {
               ...
            }
        })
  

.serialize()方法使用标准的URL编码表示法创建文本字符串。

在这种情况下,我了解serialize()创建一个查询字符串,如check=check2&radio=radio1。 可能我可以json_encode服务器端的查询字符串再次获得JSON数据。 所以我要说在这种情况下serialize()就像第一种方法中的隐式序列化一样。

2。 JSON.stringify(),serializeArray()

$.ajax({
        url: 'test.php',
        type : "POST", 
        dataType : 'json',
        data : JSON.stringify($("#form").serializeArray()), 
        success : function(result) {
           ...               
        },
        error: function() {
           ...
        }
    })
  

.serializeArray()方法创建一个JavaScript对象数组,   准备好编码为JSON字符串。

像这样(表格中的2和1个文字)

[
  {
    name: "a",
    value: "1"
  },
  {
    name: "b",
    value: "2"
  }
]
  

stringify函数返回一个表示JSON格式的String   ECMAScript值... value参数是ECMAScript值,它是   通常是一个对象或数组...

生成像这样的输出字符串

'[{"name": "a","value": "1"},{"name": "b",value: "2"}]'

我可以再次编码为JSON数据。

由于

0 个答案:

没有答案