【问题标题】:jQuery - now: Creating an object and storing values in it to pass to an AJAX calljQuery - 现在:创建一个对象并在其中存储值以传递给 AJAX 调用
【发布时间】:2011-02-20 12:26:54
【问题描述】:

我有一个数组:

myarr = [];

我正在用一些值填充它:

myarray['name'] = "Me!";

现在我想将该数组转换为一组 Key => Value 对。我虽然 jQuery 会自动执行此操作,但似乎不会。

$.ajax
({
    type: "POST",
    dataType: "text",
    url: "myurl",
    data: myarr
});

有没有办法做到这一点或我做错了什么?我没有收到任何 javascript 错误,也没有收到任何服务器端错误,除了没有任何 POST 信息。

我需要将请求作为真正的 POST 请求发送。我需要保持 php 代码简单,因为有时登录 不会 是 AJAX 调用。

我现在正在尝试以下错误unexepected token ':'

myarr:
{
    'name':'me'
}

现在问题变成了:如何将新的 javascript 对象初始化为“空白”,如何设置映射,以及如何在 AJAX 调用中传递它?

【问题讨论】:

    标签: php jquery ajax post


    【解决方案1】:

    data 属性是一个对象,所以它使用如下符号:

    data: { 'Name': 'Me!' }
    

    没有

    data: ['Name':'Me!']
    

    您需要将数组转换为对象。您可以轻松地代替数组执行此操作:

    myData.Name = 'Me';
    myData.OtherProp = 'Something';
    

    这里有一些示例:

    $.ajax({
        type: 'POST',
        dataType: 'text/html',
        url: 'myUrl.php',
        data:
        {
            'Name': 'Me!'
        },
        success: function(data, status)
        {
            // data is the returned response
        }
    });
    

    var myObject = new Object();
    
    myObject.Name = 'Me!';
    
    $.ajax({
        type: 'POST',
        dataType: 'text/html',
        url: 'myUrl.php',
        data: myObject
    });
    

    两者都应该带你到正确的地方。

    【讨论】:

    • 但是我之前在数据字段中发送了name=me&user=new&date=today 之类的字符串,没有任何问题。我需要知道它是如何在服务器端出现的。它需要是一个真正的 POST 请求。
    • jQuery 为您完成从对象到发布数据的转换。
    • 太棒了,让我试试。我认为它会转换该数组,但我想不会。
    • 你能解释一下语法吗?
    【解决方案2】:

    不能直接传递数组,需要先编码再传递。例如,您可以使用来自json.org 的 json2.js 将其编码为 JSON:

    var mydata = JSON.stringify(myarr);
    $.ajax
    ({
     type: "POST",
     dataType: "text",
     url: "myurl",
     data: {"mydata" : mydata}
    });
    

    然后您需要在 PHP 中使用json_decode 将 JSON 字符串转换回数组。

    更新

    解决您的新问题:

    如何将新的 javascript 对象初始化为“空白”?

    你可以像这样创建一个新对象:

    var myObj = {};
    

    如何设置映射?

    有几种不同的方法:

    myObj.name = "Me!";
    myObj['name'] = "Me!";
    

    如何在 AJAX 调用中传递它?

    直接将其作为data 参数传递:

    data: myObj
    

    【讨论】:

    • 我喜欢它,但现在我正在使用 CodeIgniter,我无法在其中拨打json_decode。我只需要将它作为一组真实的 POST 值发送。
    • 我也在使用 CodeIgniter,并且不时在我的应用程序中使用json_decode。例如:$data = json_decode($this->input->post('mydata'), true);
    • 我会看看,不过你能澄清一下 Tejs 给出的任何语法吗?
    • @Josh - 我刚刚更新了我的答案以直接回答您的新问题。
    【解决方案3】:

    像以前一样继续,但将 [ 更改为 { 和 ] 更改为 }(这会将您的数组更改为对象)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 2014-05-19
      • 2012-09-20
      相关资源
      最近更新 更多