处理数组的 Ajax 表单


ajax form handling an array

我尝试处理一个数组来自提交表单数据后的php文件,提交表单后的数据值是= ARRAY,但我不能以任何方式使用这个数组,任何想法我如何处理这个数组!!!

Javascript :

   $('#file').live('change',function(){
       $('#preview').html('');
       $('#preview').html('<img src="loader.gif" />');
       $('#data').ajaxForm(function(data){
               $(data['toshow']).insertBefore('.pic_content').hide().fadeIn(1000);
       }).submit();
  });

.PHP:

....
....etc
echo json_encode(array('toshow'=>somedata,'data'=>somedata));

来自服务器的 JSON 字符串

{"toshow":"'r'n't't't't'r'n't't<table class='"out'">'r'n't't't<tr ><td class='"img'"><a title='"2012-06-02 01-22-09'" rel='"prettyPhoto'" href='"img'/2012-06-02 01-22-09.284.jpg'"><img  src='"img'/thumb'/2012-06-02 01-22-09.284.jpg'"'/><'/a><'/td><'/tr>'r'n't't't'r'n't't't<td>'r'n't't't't<table cellSpacing='"1'" cellPadding='"0'">'r'n't't't't't<tr><td class='"data'"><span class='"click'">2012-06-02 01-22-09<'/span><'/td><'/tr>'r'n't't't't't<tr><td class='"data'"><span class='"click'">Download<'/span><'/td><'/tr>'r'n't't't't't<tr><td class='"data'"><a href='"img'/2012-06-02 01-22-09.284.jpg'"><span class='"click'">View<'/span><'/a><'/td><'/tr>'r'n't't't't<'/table>'r'n't't't<'/td>'r'n't't't<'/tr>'r'n't't<'/table>","span":"<span class='text'><img src='greencheck.png''/>2012-06-02 01-22-09 Uploaded ,File Size =152Kb <'/span>"}

最好使用 json_encode($array) 将数组转换为 JSON 格式。 JSON 数据可以通过 Javascript 轻松处理

你不能

直接回显数组,它只会输出Array

您需要使用json_encode。

echo json_encode($your_array);

你也可以通过PHP处理数组,也可以使用jQuery来处理数组

对于 jQuery 使用 - jQuery each

用于 PHP - foreach 或 for 循环

或尝试

echo '<pre>';
print_r($array);
echo '</pre>';

在你的 PHP 端,你必须在 JS 端插入json_encode($array) AND 而不是使用 data['toshow'] 使用 data.toshow

希望对您有所帮助!

发送一个 JSON 响应,如下所示:

<?php
echo json_encode($yourarray);
?>

然后,要调整 AJAX 函数,请执行以下操作:

  $('#file').live('change',function(){
       $('#preview').html('');
       $('#preview').html('<img src="loader.gif" />');
       $('#data').ajaxForm(function(data){
               var jsonData = jQuery.parseJSON(data);
               //acess it like
               alert(jsonData.toshow); //alert for your testing
               $(jsonData.toshow).insertBefore('.pic_content').hide().fadeIn(1000);
       }).submit();
  });
  • 编辑*更改,根据插件文档更新。

我从未使用过.ajaxForm jQuery插件,我继续阅读文档,我将把代码放在这里,从我阅读的内容中尽可能清晰,我什至让插件自动将响应解析为json。

我没有看到任何.ajaxForm().submit(),根据文档

,没有必要这样做。
$('#file').live('change',function(){
    $('#preview').html('');
    $('#preview').html('<img src="loader.gif" />');
        $('#data').ajaxForm({ 
            dataType:  'json',
            success:   function(data){
                alert("json string response from php: "+ data.toshow);
                $(data.toshow).insertBefore('.pic_content').hide().fadeIn(1000);    
            }
        }); 
});

dataType 使插件单独解析对 json 的响应。和成功:函数(数据)如果只有来自 PHP 的响应,就会发生。仔细实施它,如果您仍然没有正确,请提供链接。