1

这是我的 jQuery 代码。我在正确格式化 JSON 中的数据时遇到问题,并且请求失败。我需要做什么才能正确发送它并能够在服务器上对其进行解码?

$(".comment_button").click(function() {

    var chkarray = [];
    $('.webInput:checked').each(function(){
        chkarray.push($(this).val());
    });

    var dataString = "content="+ chkarray;

    if(test=='')
    {
        alert("Please check checked");
    }

    $.ajax({
        type: "POST",
        url: "chkoutput.php",
        dataType:'json',
        data: dataString,
        cache: false,
        success:
            function(html)
            {
                $("#test_area").after(html);
                document.getElementById('content').value='';
                $("#flash").hide();
            }
    });

这是服务器端代码:

$chk_out = $_POST["content"];
echo json_encode($chk_array);
4

3 回答 3

1
var dataString=JSON.stringify(chkarray)   ;
  $.ajax({
        type: "POST",
        url: "chkoutput.php",
        dataType:'json',
        data: {"dataString":dataString},
        cache: false,
        success:
            function(html)
            {
                $("#test_area").after(html.data);
                document.getElementById('content').value='';
                $("#flash").hide();
            }

在服务器端

$chk_out = json_decode(dataString);
$data=$chk_out->data;//$data is data which you added to array or we can say
 // $chk_out["data"]
于 2012-09-30T10:14:02.620 回答
1

尝试这个

$.ajax({
   type: "POST",
   url: "BACKEND.php",
   timeout: 8000,
   data: "var1=" + myVar,
   dataType: "json",
   error: function(){
     $("#DIVID").html("<div class='error'>Error!</div>");
   },  
   success: function(jsonObj){
     $("#DIVID").html(jsonObj.mydata);
   }
 });


PHP Array:
$data['mydata'] = $myData;

或按照以下步骤

  1. 使用 var st = JSON.stringify(your_object); 字符串化您的 javascript 对象 (json);

  2. 将您的 POST 数据作为“字符串”传递(可能使用 jQuery:$.post('foo.php',{data:st},function(data){... });

  3. 在服务器端处理解码您的数据: $data = json_decode($_POST['data']);

或简单的一个

var array = [1,2,3,4,5,6];
$.ajax({
  url: "mydomain.com/url",
  type: "POST",
  dataType: "json",
  data: {arrayName: array},
  complete: function() {
    //called when complete
  },
  success: function() {
    //called when successful
  },
  error: function() {
    //called when there is an error
  },
});
于 2012-09-30T10:21:06.840 回答
-1

如果你想传递数组和 post 方法,你可以试试这个,使用 $.post 来简化我已经更新了你的代码。

$(".comment_button").click(function() {

        var chkarray = [];
        $('.webInput:checked').each(function(){
        chkarray.push($(this).val());
        });
       // var dataString = "content="+ chkarray;      
    if(test=='')
    {
    alert("Please check checked");

    }
        $.post('chkoutput.php',{dataString:chkarray },function(data){

                     $("#test_area").after(html);
                     document.getElementById('content').value='';
                     $("#flash").hide();
                        });
}

正如你提到的,你不知道 jquery 首先检查 javascript 错误,在任何调试工具(如 mozila firebug 或任何方便的东西)中并发布它们以便更好地提供帮助。

为我亲爱的评论员编辑

我应该向大家道歉,让大家感到困惑,我在 var dataString 上添加了一条评论,但即使没有评论,代码也可以工作。因为 $.post 参数中的 dataString 不代表 var dataString。它是传递给 $.post 方法的全新对象的属性名称,所有其他内容都由 $.post 函数管理。我真的很惊讶没有人在责备之前尝试或检查过。

如果您不同意,这肯定会起作用,只需将以下代码复制并粘贴到 php(命名为 index.php)文件中并点击它,然后单击按钮,看看会发生什么,然后问我它是如何工作的

<?php 
if(!empty($_POST))
{
  var_dump($_POST);exit;
}
?>
<!DOCTYPE html>
<html>
<body>

<h1>Please GET It</h1>


<script src="http://code.jquery.com/jquery-latest.min.js "></script>
<script>
function doSomething()
{   var test = ['I','am','an','array','wrong?', 'and posted as it was said on click']
    $.post('index.php',{test : test},function(data) {alert(data);})
}
</script>

<button onclick="doSomething()">Click me </button>

</body>

    </html>  
于 2012-09-30T10:21:19.133 回答