diff --git a/include/ajax.search.php b/include/ajax.search.php
index c4e765c6d68710297d14192ad8cf98078ae1fb6b..bfa92ba3c9162e66b18252e1730d3ca64fe901e5 100644
--- a/include/ajax.search.php
+++ b/include/ajax.search.php
@@ -128,7 +128,7 @@ class SearchAjaxAPI extends AjaxController {
             else
                 $data[$name] = $info['value'];
         }
-        $form = $search->getForm();
+        $form = $search->getForm($data);
         $form->setSource($data);
         if (!$data || !$form->isValid()) {
             Http::response(422, 'Validation errors exist on form');
@@ -137,6 +137,8 @@ class SearchAjaxAPI extends AjaxController {
         $search->config = JsonDataEncoder::encode($form->getState());
         if (isset($_POST['name']))
             $search->title = $_POST['name'];
+        elseif ($search->__new__)
+            Http::response(400, 'A name is required');
         if (!$search->save()) {
             Http::response(500, 'Internal error. Unable to update search');
         }
diff --git a/include/staff/templates/advanced-search.tmpl.php b/include/staff/templates/advanced-search.tmpl.php
index b31763e4e666ac8951ba13f44729b33fed2caad8..cc14fa18df075e28b0369cb40474791cbd5a5cde 100644
--- a/include/staff/templates/advanced-search.tmpl.php
+++ b/include/staff/templates/advanced-search.tmpl.php
@@ -12,11 +12,13 @@ foreach ($form->errors(true) ?: array() as $message) {
 }
 
 $info = $search->getSearchFields($form);
+foreach (array_keys($info) as $F) {
+    ?><input type="hidden" name="fields[]" value="<?php echo $F; ?>"/><?php
+}
 $errors = !!$form->errors();
 $inbody = false;
 $first_field = true;
 foreach ($form->getFields() as $name=>$field) {
-    ?><input type="hidden" name="fields[]" value="<?php echo $name; ?>"/><?php
     @list($name, $sub) = explode('+', $field->get('name'), 2);
     if ($sub === 'search') {
         if (!$first_field) {