javascript submit () не работает - PullRequest
0 голосов
/ 20 февраля 2012

Вот форма, которая находится внутри index.php - я пытаюсь программно отправить ее, щелкнув изображение, вложенное в якорь 'a':

  <form name="landingForm" id="landingFormId" method="post" action="index.php">
      <input type="text" size="250" maxlength="250" 
                      id="artifactName">Enter an artifact name here...
      </input>
      <a href="javascript:document.landingForm.submit()">    
          <img src="http://localhost/myProj/bronzeAgeCaveDrawing.jpg" 
                      alt="Submit this form" name="imageFormSubmitter" />
      </a>
  </form>

Вот мойphp code:

<?php
    if(isset( $_POST['imageFormSubmitter']))
    {
       // this fx just echos a javascript 'alert()'
       showAlertBox("The index page form 'landingForm' was just submitted.");
    }
    else
    {
       var_dump($_GET);
       var_dump($_POST);
    }
  ?>

Когда я набираю что-то в поле для редактирования на форме, затем нажимаю на изображение «bronzeAgeCaveDrawing.jpg», дамп массивов GET и POST говорит:

  array
      Empty

  array
      Empty

И в этом отношении я даже не уверен, что приведенный выше код PHP вообще вызывается для случая

      <a href="javascript:document.landingForm.submit()">

, потому что приведенный выше код php выполняется независимо от того, отправляет ли форма - GETи POST-дамп происходят, когда index.php загружается из-за вышеприведенного предложения 'else', которое я добавил, потому что не похоже, что это предложение if.

Если приведенный выше код php действительно выполняетсяс помощью вызова submit () GET и POST все еще являются пустыми массивами.

Я изучил примеры использования якоря 'a' с изображением в сочетании с вызовом submit () в нескольких сообщениях на SO иЯ не вижу причин, почему PМассив OST или GET пуст.И из-за моей формы method = "post" я на 100% ожидаю отправки () для отправки формы, а не отправки с GET.

Я смотрел на это некоторое время - я что-то упустил?

ОБНОВЛЕНИЕ: Вот действующий код - спасибо за помощь, ребята!

    <form name="landingForm" id="landingFormId" method="post" action="index.php">
      <input type="text" size="250" maxlength="250"  name="itemName_name"
                      id="artifactName">Enter an artifact name here...
      </input> 
      <a href="javascript: document.landingForm.submit()">    
          <img src="http://localhost/myProj/bronzeAgeCaveDrawing.jpg" 
                 alt="Submit this form" name="imageFormSubmitter" />
      </a>
    </form>


   if(isset( $_POST['itemName_name']))
   {
         showAlertBox("The index page form 'landingForm' was just submitted.");
         var_dump($_POST);
   }

Вывод дампа массива POST NOW показывает:

   array
       'itemName_name' => string 'fffffffffff' (length=11)

TAKEAWAYS:

1) the syntax "document.landingForm.submit()" is 100% fine.
2) the 'name' attribute of my <img> tag does NOT get posted (not sure why,
      but it's not the worst thing happening for me right now so I'll deal with it)
3) giving the text <input> field a 'name' attribute made its way fine to the POST array.
4) the call to submit() does in fact pay attention to the method="post" in my 
   form declaration.

Я бегу с этим, спасибо всем.Для меня есть более одного одинаково приемлемого ответа, поэтому мне +1 придется выбрать один.Еще раз спасибо.

1 Ответ

1 голос
/ 20 февраля 2012

Вы не устанавливаете атрибут name в своем теге <input>, а тег <img> не является правильным способом отправки с изображением.

<form name="landingForm" id="landingFormId" method="post" action="index.php">
  <input type="text" size="250" maxlength="250" name="artifactName"
                  id="artifactName" />Enter an artifact name here...
  <input type="image" src="http://localhost/myProj/bronzeAgeCaveDrawing.jpg" 
                  alt="Submit this form" name="imageFormSubmitter" />
</form>

Источник: Ссылка на тег HTML Dog

Обратите также внимание, что тег <input> в HTML5 не имеет / не может иметь детей.

...