2010-06-09 44 views
1

我想一些数据提交给PHP脚本,但是PHP脚本预期的数据以特定的格式到达,像这样的例子是后转储,jQuery的AJAX和PHP阵列

Array ([save] => Add to shortlist [cv_file] => Array ([849709537] => Y [849709616] => Y [849709633] => Y)) 

过程是目前唯一一个用户选择他们想要使用复选框的产品,然后点击提交按钮的时候触发的PHP脚本,

的HTML看起来像这样,

div class="row"> 

         <ul> 
          <li class="drag_check ui-draggable"> 
           <input type="checkbox" id="inp_cv_849709537" name="cv_file[849709537]" class="cv_choice" value="Y"> 
          </li> 

          <li class="id"><a href="/search/cv/849709537">849709537</a></li> 
          <div class="disp"> 
          <li class="location">Huddersfield</li> 
          <li class="status"> 
          Not currently working        </li> 
          <li class="education">other</li> 
          <li class="role"> 
          Temporary        </li> 
          <li class="salary">£100,000 or more</li> 
          <div class="s">&nbsp;</div> 
          </div> 
         </ul> 
          <dl> 
           <dt>Current Role</dt> 
           <dd>Developer </dd> 
           <dt>Sectors</dt><dt> 
           </dt><dd> 
            Energy &amp; Utilities, Healthcare, Hospitality &amp; Travel, Installation &amp; Maintenance, Installation &amp; Maintenance         </dd> 

           <dt>About Me</dt><dt> 
           </dt><dd></dd> 
           </dl> 
           <div class="s"></div> 
        </div> 

我需要使用AJAX,而不是现在,但我需要将数据发送到PHP中,预计这里的格式是什么,我到目前为止,

$('#addshortlist').click(function() { 
var datastring = ui.draggable.children().attr('name')+"="+ui.draggable.children().val()+"&save=Add to shortlist"; 
alert(datastring); 
$.ajax({ 
    type: 'POST', 
    url: '/search', 
    data:ui.draggable.children().attr('name')+"="+ui.draggable.children().val()+"&save=Add to shortlist", 
    success:function(){ 
     alert("Success"+datastring); 
    }, 
    error:function() { 
     alert("Fail"+datastring); 
    } 
}); 
return false; 

});

我真的很感谢所有帮助

+1

你能修改你的PHP脚本吗?如果是这样,您可以将数据作为JSON传递并在您的PHP脚本中解码 – 2010-06-09 15:39:49

回答

0

要获得所产生的PHP输出,你需要组建一个对象字面如下:

var your_data = { 
    save: 'Add to shortlist', 
    cv_array: { 
     '849709537': 'Y', 
     '849709616': 'Y', 
     '849709633': 'Y' 
    } 
}; 

然后你就可以做到这一点

$.ajax({ 
    type: 'POST', 
    url: 'http://example.com/path/to/script.php', 
    data: your_data, 
    success: function(data){ 
     $('#debug').html(data); 
    }, 
    dataType: 'html' 
}); 

(顺便说一句,将产生您的输出的基本HTML将是):

<form action="http://example.com/path/to/script.php" method="POST" id="myForm"> 
    <input name="save" value="Add to shortlist"> 
    <input type="checkbox" name="cv_array[849709537]" value="Y" checked> 
    <input type="checkbox" name="cv_array[849709616]" value="Y" checked> 
    <input type="checkbox" name="cv_array[849709633]" value="Y" checked> 
    <input type="submit" value="Continue &rarr;"> 
</form> 

现在,如果您尚未更改表单,那么您真正需要做的就是进行ajax调用,并且您传递的数据将与jQuery的serialize()方法组装在一起,该方法将表单的所有内容你可以传递给服务器端脚本的东西:

$.ajax({ 
    type: 'POST', 
    url: 'http://example.com/path/to/script.php', 
    data: $('#myForm').serialize(), 
    success: function(data){ 
     $('#debug').html(data); 
    }, 
    dataType: 'html' 
});