2013-07-15 3 views
0

Я пытаюсь отправить ID и отправленное из ajax_form.php в ajax_test.php()Невозможно получить значение, отправленное через метод поста

мой ajax_form.php является:

<html> 
<head> 
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type" /> 
    <meta content="utf-8" http-equiv="encoding" /> 
    <script type="text/javascript"> 
    function showUser(form, e) { 
     e.preventDefault(); 
     e.returnValue=false; 
     var xmlhttp; 
     var submit = form.getElementsByClassName('submit')[0]; 
     //var sent = document.getElementsByName('sent')[0].value || ''; 
     //var id = document.getElementsByName('id')[0].value || ''; 
     var sent = form.elements['sent'].value; 
    var id = form.elements['id'].value; 

     if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
     } else { 
      // code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

     xmlhttp.onreadystatechange = function(e) { 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
       document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 
      } 
     } 
     xmlhttp.open(form.method, form.action, true); 
     xmlhttp.send('sent=' + sent + '&id=' + id + '&' + submit.name + '=' + submit.value); 
    } 
    </script> 
</head> 
<body> 
    <form action="ajax_test.php" method="POST" onsubmit="showUser(this, event)"> 
     <label>Enter the sentence: <input type="text" name="sent"></label><br /> 
     <input type="submit" class="submit" name="insert" value="submit" /> 
     <input type="" name="id" style="display: none"/> 
    </form> 

    <h4>UPDATE</h4> 
    <form action="ajax_test.php" method="POST" onsubmit="showUser(this, event)"> 
     <pre> 
      <label>Enter the ID:</label><input type="text" name="id"><br> 
       <label>Enter the sentence:<input type="text" name="sent"></label><br /> 
     </pre> 
     <input type="submit" class="submit" value="submit" name="update"/> 
    </form> 

    <br /> 
    <div id="txtHint"> 
     <b>Person info will be listed here.</b> 
    </div> 
</body> 
</html> 

и ajax_test.php является:

<html><head> 
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> 
    <meta content="utf-8" http-equiv="encoding"> 
    </head> <body > 
    <?php 
    $s = $_POST['sent']; 
    echo "Entered sentence : $s"; 

    if (isset($_POST['insert']) && $_POST['insert'] !== '') { 
    echo "Operation: Insert","<br>"; 
    $s = $_POST['sent']; 
    $flag = 0; 
    echo "Entered sentence : $s"; 
    //database stuff 

    mysqli_close($con); 
    } 

    // -------------------------------UPDATE -------------------------- 
    if (isset($_POST['update']) && $_POST['update'] !== '') { 
    echo "Operation: update", "<br>"; 
    // you say update but you are actually inserting below 

    $s = $_POST['sent']; 
    $flag = 1; 

    echo "Entered sentence : $s"; 
//database stuff 

     mysqli_close($con); 
    } 
    ?></html > </body > 

ни содержимое вне if() получить выполнен правильно и не if я получаю сообщение об ошибке:

Notice: Undefined index: sent in /opt/lampp/htdocs/test/ajax_test.php on line 6 

Просто Entered sentence : печатаем.

Где проблема в сообщении? В идеале я мог бы получить id и sent!

ответ

1

Перед отправкой на номер application/x-www-form-urlencoded необходимо установить Content-Type. См. documentation.

+0

Спасибо, приятель, я прочитал документ. '$ headers [] = 'Accept: application/ajax'; $ headers [] = 'Content-Type: application/ajax'; curl_setopt ($ ch, CURLOPT_HTTPHEADER, $ headers); '? Но стоит ли это проблема? – user123

+0

_Before_ строка 'xmlhttp.open (form.method, form.action, true);', попробуйте добавить 'xmlhttp.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');' – marekful

+0

Большое спасибо, я делал тонны изменений за последние два дня за эту проблему! Хотел бы я дать 10+ голосов! – user123