2010-06-09 43 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' 
});