Я пытаюсь отправить форму в fancybox, где пользователи могут добавить компанию в поле выбора, которое существует на родительской странице модалов. Я делаю это, отправляя модальную информацию в скрипт, который добавляет компанию в мою базу данных. Затем я запускаю запрос, чтобы получить все обновленные компании в виде группы тегов. Затем я пытаюсь передать эту группу тегов на родительскую страницу как обновление jquery. Я не уверен, что это лучший подход или я ошибаюсь.
Я пытаюсь использовать этот пост в качестве руководства:
Найти элемент на сайте с fancybox iframe
Но у меня есть две проблемы с моим кодом. Один: fancybox не закрывается. Two: поле выбора на родительской странице не обновляется.
Я не уверен, где я ошибаюсь в своем звонке. Код со страницы Modal:
$("#send-message").click(function(){ $(this).closest('form').submit(function(){ return false; }); var frm = $(this).closest('form'); if($(frm).valid()){ $("#ajax-loading").show(); var data = $(frm).serialize(); $(frm).find('textarea,select,input').attr('disabled', 'disabled'); $.post( "../forms/company_add.php", data, function(data) { if (data.success) { // data.redirect contains the string URL to redirect to $('#companyselect', $(parent.document)).html(data.success); parent.$.fancybox.close(); } else { $("#ajax-loading").hide(); $(frm).find('textarea,select,input').removeAttr('disabled'); $("#send_message_frm").append(data.error); } }, "json" ); } });
Код из company_add.php возвращает все теги параметров, например:
if ($_POST) { // Collect POST data from form $name = filter($_POST['name']); $conmail = filter($_POST['conmail']); $addy = filter($_POST['addy']); $confax = filter($_POST['confax']); $city = filter($_POST['city']); $state = filter($_POST['state']); $con = filter($_POST['con']); $conphone = filter($_POST['phone']); $zip = filter($_POST['zip']); } $search1 = mysql_query("SELECT man_name FROM manufacturers WHERE man_name = '$name'"); $outcome1 = mysql_fetch_row($search1); $num_rows1 = mysql_num_rows($search1); $imageid1 = $outcome1[0]; $imageid1 = filter($imageid1); if ($num_rows1 > 0) { echo json_encode(array( "error" => '<div class="msg-error">A company by that name already exists.</div>' )); } else { $stmnt = mysql_query("INSERT INTO manufacturers (manufacturer_id, man_name, man_address, man_city, man_state,man_zip, man_contact, man_phone, man_fax, man_mail) VALUES ('NULL', '" . $name . "', '" . $addy . "' ,'" . $city . "', '" . $state . "' , '" . $zip . "' , '" . $con . "' , '" . $conphone . "' , '" . $confax . "', '" . $conmail . "' )"); //echo "Duplicate WAS found:" . $answer1; mysql_query($answer1); //} $resp['status'] = 'success'; if (empty($error)) { $nada = "SELECT man_name FROM manufacturers ORDER BY man_name ASC"; $resulter = mysql_query($nada); $comp1 = '0'; //Spit out array of companys as select boxes $select = '<option value="">--Select one--</option>'; while ($result59 = mysql_fetch_array($resulter)) $select .= '<option value="' . $result59['man_name'] . '">' . $result59['man_name'] . '</option>'; echo json_encode(array( "success" =>$select )); } else { echo json_encode(array( "error" => '<div class="msg-error">Error: Unable to add your company at this time</div>' )); } }
Я новичок в программировании и очень новичок в Jquery, поэтому я надеюсь, что кто-то сможет увидеть, где я ошибаюсь. Я использую fancybox 2 и php.
Вы проверили консоль ошибок для любых ошибок JavaScript?
Вы можете попробовать это так или иначе:
parent.$('#companyselect').html(data.success);