1
var storeSettings = [];

                        obj.find(o_widgetClass).each(function(){
                            var storeSettingsStr          = {};
                            storeSettingsStr['id']        = $(this).attr('id');
                            storeSettingsStr['style']     = $(this).attr('data-widget-attstyle');
                            storeSettingsStr['title']     = $(this).children('header').children('h2').text();
                            storeSettingsStr['hidden']    = ($(this).is(':hidden') ? 1 : 0);
                            storeSettingsStr['collapsed'] = ($(this).hasClass('powerwidget-collapsed') ? 1 : 0);
                            storeSettings.push(storeSettingsStr);
                        }); 

                        var storeSettingsObj = JSON.stringify( {'widget':storeSettings} );

                        /* Place it in the storage(only if needed) */
                        if(getKeySettings != storeSettingsObj){
                            //alert(storeSettingsObj);
                            var memberfilter = new Array();
                            memberfilter[0] = "id";
                            memberfilter[1] = "style";
                            var jsonText = JSON.stringify(storeSettings, memberfilter);
alert(jsonText);


   // it gives this result 
[{"id":"widget1"},{"id":"widget3","style":"black"},{"id":"widget4"},{"id":"widget5"},{"id":"widget2","style":"black"},{"id":"widget6"},{"id":"widget7"},{"id":"widget9"},{"id":"widget8"},{"id":"widget10"},{"id":"widget12"},{"id":"widget13"},{"id":"widget11"},{"id":"widget14"}]

现在我如何通过 jquery ajax 发送它?我正在尝试使用下面提到的代码,但还不能在服务器上获取数据

$.ajax({
    type: 'POST',
    url: 'get_query.php',                      
    data: "test="+jsonText,
    success: function(data) {
        alert(data);
        }
});

那么你能解释一下如何发送以及如何获取这些数据吗?我试过 json_decode 但不适合我。

在 xdazz 评论后编辑以在没有字符串化的情况下发送它

当我 print_r($_POST['test']) 得到这个

Array

( [0] => 数组 ( [id] => widget1 [title] => 隐藏小部件 [hidden] => 1 [collapsed] => 0 )

[1] => Array
    (
        [id] => widget3
        [style] => red
        [title] => Icons
        [hidden] => 0
        [collapsed] => 0
    )

[2] => Array
    (
        [id] => widget4
        [style] => black
        [title] => No toggle button
        [hidden] => 0
        [collapsed] => 0
    )

[3] => Array
    (
        [id] => widget5
        [title] => No delete button
        [hidden] => 0
        [collapsed] => 0
    )

[4] => Array
    (
        [id] => widget6
        [title] => No edit button
        [hidden] => 0
        [collapsed] => 0
    )

[5] => Array
    (
        [id] => widget7
        [title] => Not fullscreen button
        [hidden] => 0
        [collapsed] => 0
    )

[6] => Array
    (
        [id] => widget9
        [title] => No custom button
        [hidden] => 0
        [collapsed] => 0
    )

[7] => Array
    (
        [id] => widget8
        [title] => Not sortable
        [hidden] => 0
        [collapsed] => 0
    )

[8] => Array
    (
        [id] => widget10
        [title] => Collapsed widget
        [hidden] => 0
        [collapsed] => 1
    )

[9] => Array
    (
        [id] => widget12
        [title] => Auto refresh
        [hidden] => 0
        [collapsed] => 0
    )

[10] => Array
    (
        [id] => widget2
        [style] => black
        [title] => Basic widget
        [hidden] => 0
        [collapsed] => 0
    )

[11] => Array
    (
        [id] => widget13
        [title] => No timestamp
        [hidden] => 0
        [collapsed] => 0
    )

[12] => Array
    (
        [id] => widget11
        [title] => Ajax
        [hidden] => 0
        [collapsed] => 0
    )

[13] => Array
    (
        [id] => widget14
        [title] => No refresh button
        [hidden] => 0
        [collapsed] => 0
    )

)

4

3 回答 3

5

您不需要对对象进行字符串化,直接将其用于data属性。

$.ajax({
    type: 'POST',
    url: 'get_query.php',                      
    data: {test: myvariable},
    success: function(data) {
      alert(data);
    }
});

然后在php端,var_dump($_POST['test']);看看你得到了什么。

于 2012-10-05T06:19:59.070 回答
2

你可以试试这个:

$.ajax({
        type: 'POST',
        url: 'get_query.php',                      
        data: jsonText,
        contentType: "application/json",
        success: function(data) {
            alert(data);
            }
    });

但在 PHP 方面,您需要 $GLOBALS["HTTP_RAW_POST_DATA"]; 接收 JSON 数据。

于 2012-10-05T06:22:27.183 回答
0
<script>
var information = ['hi','hello'];
$.ajax({
    type: "POST",
    data: {info: information, "action": "getUserRecords"},
    url: "/var/www/pinboard/wp-content/themes/pinboard/userinfo.php",
    success: function(msg) {
        $('.userDetail').html(msg);
    }
});
</script>
于 2016-01-04T05:28:03.583 回答