vote up 1 vote down star

I'm loading an array in my javascript. I need to send this array, in some format, to the PHP script that I'm going to call. In my example below, gSelectedMeds is my array. The value "count" will tell the PHP script how many "meds" items to expect to receive. I'm having trouble getting the data from the array into an format that I can send via the data option of $.ajax. Any help would be greatly appreciated!!

The part of the code below that is giving me grief at the moment is the data option.

$('#export').click(function() {
    $.ajax({
    	url:'ajax-exportMeds.php',
    	data: 
    		{"number":gSelectedMeds.length},
    		$.each(gSelectedMeds,
    			function(intIndex, objValue){
    				{"med"+intIndex:objValue},
    			}
    		),
    	type: "GET",
    	//dataType: "text",
    	success: function(data){
    		$('p#allMeds').text('');
    		$('a.bank').text('');
    		//clear array, bank and storedList divs
    		$(this).text('');
    		gSelectedMeds[] = '';
    		//$('ul#storedList').fadeOut('fast');
    		$('ul#storedList').text('');
    		return false;
    	},
    }),
});
flag

2 Answers

vote up 3 vote down

You should send the data as json. Then you can read it using json_decode() in php >= 5.2.0

link|flag
do I need to create the JSON up front? how would I send it using the data option? – acedanger 2 days ago
actually, I just used 'JSON.stringify' and that seems to have worked so far – acedanger 2 days ago
vote up 0 vote down

I ended up stringing out the array and sending a count at the end of the url that I called:

$('#export').click(function() {
    	$.each(gSelectedMeds, 
    	 function(intIndex, objValue) {
    		i=intIndex + 1;
    		if(i>1) {string+='&';}
    		string+='med'+i+'="'+objValue+'"';
    	 }
       )

       string += "&count;="+i;

    	$.ajax({
            url: 'ajax-exportMeds.php?'+string,
            type: "GET",
            dataType: "text",
            success: function(data){
    			  $('#dialog_layer').dialog({
    					autoOpen: true,                                                 
    					bgiframe: true,
    					modal: true,
    					closeOnEscape: true,
    					buttons: {
    						"OK": function() { $(this).dialog("close"); }
    					}      
    			  })
             }
    	})
    });
link|flag

Your Answer

Get an OpenID
or

Not the answer you're looking for? Browse other questions tagged or ask your own question.