#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 скрипт.