使用jQuery ajax向php服务器发送JavaScript数组

使用jQuery ajax向php服务器发送JavaScript数组,php,json,jquery,Php,Json,Jquery,这是我的jQuery代码。我在正确格式化JSON中的数据时遇到问题,请求失败。我需要做什么才能正确发送它,并能够在服务器上解码它 $(".comment_button").click(function() { var chkarray = []; $('.webInput:checked').each(function(){ chkarray.push($(this).val()); }); var dataString = "content=

这是我的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);
在服务器端

$chk_out = json_decode(dataString);
$data=$chk_out->data;//$data is data which you added to array or we can say
 // $chk_out["data"]
在服务器端

$chk_out = json_decode(dataString);
$data=$chk_out->data;//$data is data which you added to array or we can say
 // $chk_out["data"]
试试这个

$.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;
试试这个

$.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;

如果希望传递数组和post方法,可以尝试使用$.post进行simlicity 我已经更新了你的代码

$(".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)或任何方便的工具中,然后发布它们,这样可以更好地提供帮助

为我亲爱的评论员编辑

我应该承认我的道歉让你们感到困惑,我已经在VarDataString上添加了一条注释,但是即使没有注释,代码也会工作。因为$.post参数中的dataString不表示变量dataString。它是传递给$.post方法的全新对象的属性名,所有其他内容都由$.post函数管理。我真的很惊讶,在责备之前甚至没有人尝试或检查

如果您不同意的话,这肯定会起作用,只需将下面的代码复制并粘贴到php(name it 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>  

请去拿
函数doSomething()
{var test=['I'、'am'、'an'、'array'、'error?','并按单击时所说的方式发布']
$.post('index.php',{test:test},函数(数据){alert(数据);})
}
点击我

如果要传递数组和post方法,可以尝试使用$.post进行simlicity 我已经更新了你的代码

$(".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)或任何方便的工具中,然后发布它们,这样可以更好地提供帮助

为我亲爱的评论员编辑

我应该承认我的道歉让你们感到困惑,我已经在VarDataString上添加了一条注释,但是即使没有注释,代码也会工作。因为$.post参数中的dataString不表示变量dataString。它是传递给$.post方法的全新对象的属性名,所有其他内容都由$.post函数管理。我真的很惊讶,在责备之前甚至没有人尝试或检查

如果您不同意的话,这肯定会起作用,只需将下面的代码复制并粘贴到php(name it 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>  

请去拿
函数doSomething()
{var test=['I'、'am'、'an'、'array'、'error?','并按单击时所说的方式发布']
$.post('index.php',{test:test},函数(数据){alert(数据);})
}
点击我


在服务器端,您必须执行
json_decode
来访问数组。@11684 Gud catch。我已经编辑过。@user1266514查看编辑过的代码。
json_decode
解码ajax callI发送的数组,json_decode发送的数组,但它不起作用!!在chrome中,错误是“未捕获引用错误:未定义测试”,在服务器端,您必须执行
json_decode
来访问数组。@11684 Gud catch。我已经编辑过。@user1266514查看编辑过的代码。
json_decode
解码由ajax CALI发送的数组,由json_decode发送的数组,但它不起作用!!在chrome中,错误是“未捕获引用错误:未定义测试”,您的服务器端代码在以下两点上不起作用:1)JS数组与PHP数组不同2)您是否希望
$chk_数组
神奇地出现?正如您提到的,您不知道jquery首先检查javascript错误,在任何调试工具中,如mozila firebug或任何方便的东西中,发布它们,以便更好地帮助用户。“它还不够有效”。您需要详细说明您的投入、预期和实际结果,或者将错误消息具体化。@RupeshPatel我已经回滚了您的编辑,因为您的编辑实际上在问题中犯了更多错误,并且还更改了问题的含义。代码格式非常糟糕,还引入了拼写错误。输入是我的问题是jquery数组无法发送到php,我不知道如何在php页面和Ajax中回显我的jquery数组你的服务器端代码在两点上都不起作用:1)JS数组比php数组更重要2)你希望
$chk_数组
神奇地出现吗?正如你提到的,你不知道jquery首先检查javascript错误,在任何调试工具中,如mozila firebug或任何方便的东西中,发布它们,以便更好地帮助用户。“它还不够有效”。您需要详细说明您的投入、预期和实际结果,或者将错误消息具体化。@RupeshPatel我已经回滚了您的编辑,因为您的编辑实际上在问题中犯了更多错误,并且还更改了问题的含义。代码格式非常糟糕,还引入了拼写错误。输入是我的问题是jquery数组无法发送到php,我不知道如何在php页面和Ajax中回显我的jquery数组。您不能将JS数组作为POST参数发送,因为这些是字符串。@11684您是从哪里学到的?再检查一遍,然后让我看看know@RupeshPatel11684是对的。我认为你应该转换成JSON。我想说,如果你试图将JS数组作为字符串处理,它就不会神奇地转换成JSON……问题不在于(必然)如何创建对象,而在于如何“创建”(我使用这个术语,因为你实际上没有)钥匙<代码>var dataString=“content=“+chkarray只是用逗号分隔数组值,并将它们附加到
content=
,这是没有用的。此外,对象键
dataString
根本不使用该值,它将被字符串化为“dataString”。我怀疑这段代码的某些部分可能很有用,并且完全按照您的意愿工作,但是当您只是简单地复制并粘贴代码f时