2015-03-06 3 views
1

У меня есть оператор php isset if и javascript для отправки, который, похоже, не хочет правильно отправляться. Я пробовал:Форма submit() не отправляет

document.getElementByID("form1").submit(); 
document.form1.submit(); 
document.forms[form1].submit(); 

и пробовал все эти варианты с объявлением переменной и без нее с использованием this.value.

В приведенном ниже коде есть javascript, и он «кажется» должен быть отправлен (обновление страницы и опция «выбор» по умолчанию возвращаются к опции 0, но кажется, что данные формы не были представлены, а массив не правильно отсортирован. Я новичок в PHP и JS (только начал на этой неделе), поэтому я заранее извиняюсь :)

в документе также имеет <html> и <head> тегов и obstart() и sessionstart() тег, если это помогает.

<script> 
function submitform() 
    { 
    document.getElementByID("form1").submit(); 
    } 
</script> 
# array_multisort 

$sort = array(); 
foreach($columbs as $k=>$v) 
{ 
    $sort['2'][$k] = $v['2']; 
    $sort['1'][$k] = $v['1']; 
    $sort['4'][$k] = $v['4']; 
    $sort['3'][$k] = $v['3']; 
    $sort['5'][$k] = $v['5']; 
    $sort['6'][$k] = $v['6']; 
    $sort['7'][$k] = $v['7']; 
    $sort['8'][$k] = $v['8']; 
} 

# sort by event_type desc and then title asc 

if(isset($_POST['formSubmit'])) 
{ 
$sortbysubmit = $_POST['myselect']; 
switch($sortbysubmit) 
    { 
    case "0": $sortby0 = array_multisort($sort['0'], SORT_ASC, $columbs); break; 
    case "B1": $sortby1 = array_multisort($sort['1'], SORT_ASC, $columbs); break; 
    case "B2": $sortby2 = array_multisort($sort['2'], SORT_ASC, $columbs); break; 
    default: $sortby0 = array_multisort($sort['0'], SORT_ASC, $columbs); break; 
    echo 'hello'; 
    break; 
    } 
} 
else 
    { 
    array_multisort($sort['0'], SORT_ASC, $columbs); 
    } 
    ?> 

<!--form1-->   

<form method="post" action="" id="form1" name="form1"> 
    <label for="form1">1</label><br> 
    <select name="myselect" 2="myselect" onchange="submitform()"> 
    <option value="0">0</option> 
    <option value="B1">1</option> 
    <option value="B2">2</option> 
    </select> 
    <noscript> 
    <input type="submit" value="Click me" /> 
    </noscript> 
</form> 
+2

У вас нет атрибута имени для отправки, и поэтому $ _POST ['formSubmit'] не установлен. Вы можете попробовать проверить только $ _POST. то есть, если (! empty ($ _ POST)) { –

+0

Я пробовал ваше решение, и оно почти работает. Значение 0 не похоже на сортировку, но другие значения 2. –

ответ

4

Вы проверяете ключ formSubmit в вашем посте, но вы никогда не sendig его. Попробуйте это:

<form method="post" action="" id="form1" name="form1"> 
    <label for="form1">1</label><br> 
    <select name="myselect" 2="myselect" onchange="submitform()"> 
    <option value="0">0</option> 
    <option value="B1">1</option> 
    <option value="B2">2</option> 
    </select> 
    <noscript> 
    <input type="submit" name="formSubmit" value="Click me" /> 
    </noscript> 
</form> 
+0

Спасибо. Я забыл, что я взял это некоторое время назад, потому что это, похоже, не работало для меня. Я использую wamp btw. –

+0

Кроме того, '2 = "myselect"' на самом деле 'id = "myselect" в моем реальном коде. –

1

Попробуйте использовать:

if(!empty($_POST)): 

//your submission process code goes here 

endif; 

Вы, кажется, не имеют атрибут имени кнопки для отправки, и, следовательно, $ _POST [ 'formSubmit'] не установлен.

+0

Почти работает :)! Он сортирует значения B1 и B2, но когда я нажимаю значение 0, он не сортирует значения по умолчанию. –

0

я обнаружил, что просто добавив

if(empty($_POST)): 

$sortbysubmit = $_POST['mySelect']; 

switch($sortbysubmit) 
{ 
case "SELECT": $sortbyID = array_multisort($sort['ID'], SORT_ASC, $columbs);  break; 
} 

endif; 

, а также в том числе, кажется, работает Викрам-х

if(!empty($_POST)): 

//your submission process code goes here 

endif; 

. Теперь он успешно отправляет переменную 0 вместе с 1 и 2. Спасибо людям :)

Смежные вопросы