Quantcast
Channel: Recent Discussions — DataTables forums
Viewing all articles
Browse latest Browse all 82117

Uncaught TypeError: Cannot read property 'length' of undefined

$
0
0
I constantly receive this error everytime i try to Save and Update records using the Editor plugin. I am using JQuery version 1.8.2 with DataTables 1.9.4 and Editor 1.2.3.

Here's my JS code so far
		<script>
			$(document).ready(function() {
				var editor;			
				editor = new $.fn.dataTable.Editor({
					"ajaxUrl": "'.SITE_AJAX.'ajax-custvpns.post.php",
					"domTable": "#custVPNList",
					"dbTable": "customer_vpns",
					"fields": [{
							"label": "VPN Friendly:",
							"name": "vpnFriendly",
							"type": "text"
						}, {
							"label": "Win Name:",
							"name": "vpnWinName",
							"type": "text"
						}, {
							"label": "Win Address:",
							"name": "vpnWinAddress",
							"type": "text"
						}, {
							"label": "Win User:",
							"name": "vpnWinUser",
							"type": "text"
						}, {
							"label": "Win Password:",
							"name": "vpnWinPass",
							"type": "password"
						}, {
							"label": "Win Domain:",
							"name": "vpnWinDomain",
							"type": "text"
						}
					]
				});
				
				// Create Record
				$("a.editor_create").on("click", function (e) {
					e.preventDefault();
					editor.create(
						"Create Customer VPN",
						{ "label": "Save", "fn": function () { editor.submit(); } }
					);
				});
				
				// Edit Record
				$("#custVPNList").on("click", "a.editor_edit", function (e) {
					e.preventDefault();
					editor.edit(
						$(this).parents("tr")[0],
						"Edit Customer VPN",
						{ "label": "Update", "fn": function () { editor.submit(); } }
					);
				});
			 
				// Delete Record
				$("#custVPNList").on("click", "a.editor_remove", function (e){
					e.preventDefault();
					editor.message("Are you sure you want to remove this VPN entry?");
					editor.remove(
						$(this).parents("tr")[0], 
						"Delete Customer VPN", 
						{ "label": "Confirm", "fn": function (){ editor.submit(); } }
					);
				});
				
				var custVPNTable;
				custVPNTable = $("#custVPNList").dataTable({
					"bJQueryUI": true,
					"sAjaxSource": "'.SITE_AJAX.'ajax-custvpns.src.php",
					"bDeferRender": true,
					"aoColumns": [
						{ "mData": "vpnFriendly" },
						{ "mData": "vpnWinName" },
						{ "mData": "vpnWinAddress" },
						{ "mData": "vpnWinUser" },
						{ "mData": "vpnWinPass" },
						{ "mData": "vpnWinDomain" },
						{
							"mData": null,
							"sClass": "right",
							"sDefaultContent": "<a href=\"\" class=\"editor_edit\">Edit</a> / <a href=\"\" class=\"editor_remove\">Delete</a>"
						}
					],
					"bProcessing": true,
					"sServerMethod": "POST",
					"sPaginationType": "full_numbers",
					"aLengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],
					"iDisplayLength": 25,
					"sDom": "<\"H\"<\"span6\"l><\"span6\"fr>>t<\"F\"<\"span6\"i><\"span6\"p>>",
				});			
			});
		</script>

Here's my Ajax code for the processing
	include_once('../../includes/config.php');

	$action = isset($_POST['action']) ? $_POST['action'] : NULL;
	$table = isset($_POST['table']) ? $_POST['table'] : NULL;
	$id = isset($_POST['id']) ? $_POST['id'] : NULL;
	$data = isset($_POST['data']) ? $_POST['data'] : NULL;
	
	$oCustomer = new \models\Customer();
	if($action == 'create')
	{
		$insFieldSQL = $insValueSQL = array();
		if($data)
		{
			foreach($data as $field => $value)
			{
				$insFieldSQL[] = $field;
				$insValueSQL[] = $value;
			}
		}
		
		$insCustSQL = "INSERT INTO ".$table." (".implode(', ',$insFieldSQL).")
					   VALUES ('".implode("', '",$insValueSQL)."')";
		
		$res = $oCustomer->insertCustDetails($insCustSQL);
		echo $res;
	}
	elseif($action == 'edit')
	{
		$updFieldSQL = $eFieldList = array();
		if($data)
		{
			foreach($data as $field => $value)
			{
				$updFieldSQL[] = $field." = '".$value."'";
				$eFieldList[] = $field."' => '".$value;
			}
		}
		
		$updateCustSQL = "UPDATE		".$table."
						  SET			".implode(', ',$updFieldSQL)."
						  WHERE 		vpnID = '".$id."'";
		
		$res = $oCustomer->updateCustDetails($updateCustSQL);
		//echo $res;
		
		$eResult = array('id' => $id, 'error' => '', 'fieldErrors' => array(), 'data' => array(), 'row' => array('DT_RowId' => $id,'vpnFriendly' => 'A1 Testing','vpnWinName' => 'A1_Testing_Auto','vpnWinAddress' => '192.168.105.21','vpnWinUser' => 'admin','vpnWinPass' => '','vpnWinDomain' => ''));
		echo json_encode($eResult);
	}
	elseif($action == 'remove')
	{
		$res = $oCustomer->deleteCustDetails($table,'vpnID',$data[0]);
		echo $res;
	}

When i create / update or delete a record my ajax script runs and updates via the Database but the editor popup stays open with the processing icon spinning. This is when i receive the Uncaught TypeError: Cannot read property 'length' of undefined error. I think this is to do with the ajax response as i don't really know what needs to be sent back once db update is successful.

Any help and advice would be greatly appreciated.

Viewing all articles
Browse latest Browse all 82117

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>