PHP $ _POST работает не так, как ожидалось

#javascript #php #jquery

#javascript #php #jquery

Вопрос:

В одной из моих форм у меня есть элемент управления dropdownlist, в событии «onchange» которого я заполняю два элемента управления текстовым полем, как показано ниже:

 function pop_mli_n_murl(){
 var wd_pid = document.getElementById("ddlUnder").value;
 var dataString = 'wdpid='  wd_pid;
    $.ajax({
         type: "POST",
         url: "ldd_pop_wd_pdata.php",
         data: dataString,
         cache: false,
         success: function(result){
                 var v1= result.substring(0,result.indexOf('='));
                 var v2= result.substring(result.indexOf('=') 1);
                         $("#txtMLI").val(v1);
                         $("#txtMLIURL").val(v2);
          }
    });
  }
  

До этого все работало нормально. Однако, когда я отправляю форму, $ _POST [‘txtMLI’] и $ _POST[‘txtMLIURL’] не установлены, в то время как другие установлены. Можете ли вы сказать, в чем может быть проблема??

Комментарии:

1. ОК. Итак, в моем коде, как я могу установить $ _POST [‘txtMLI’] и $ _POST [‘txtMLIURL’]??

Ответ №1:

Вероятно, вы забыли запретить отправку ОБЫЧНОЙ формы, поэтому ваш ajax-запрос завершается. Если вызов ajax был успешным, ЕДИНСТВЕННЫМ значением формы, которое вы когда-либо должны были получить, было бы $_POST['wdpid'] , потому что это единственное, что пытается отправить ваш ajax-код.

Получение ДРУГИХ значений формы означает, что произошла обычная отправка формы, а НЕ вызов ajax.

Это означает, что вам нужно что-то вроде

 <form ... onsubmit="return pop_mli_n_murl()">
...

function pop_mi_n_murl() {
    ... ajax stuff ...
    return false;  // return false to onsubmit handler, terminating the normal submit
}
  

Ответ №2:

Когда вы отправляете ajax, вы не отправляете txtMLI или xtMLIURL, вы отправляете только wdpid.

Данные в ajax должны быть примерно такими

 {
    'wdpid': 'value here',
    'txtMLI':  'value here',
    'xtMLIURL': 'value here',
}
  

Затем на стороне сервера вы сможете получить доступ к этим переменным из ldd_pop_wd_pdata.php скрипт.