PDA

View Full Version : یه سوال آژاکسی !



mohammad-gh
سه شنبه 12 مرداد 1389, 12:19 عصر
با سلام
عجیبه که تو فروم بخش مستقل آژاکس نیست!
به هر حال ، مشکل من:
من در فرمم (با PHP) دو کمبو باکس دارم که می خواهم اطلاعات کمبو باکسم دوم را با توجه به کمبو باکس اول با آژاکس پر کنم!
البته کدی هم برای این کار نوشته ام که کمبو دوم با تغییر کمبو اول پر می شود ولی ایرادش اینه که کمبو دوم بعد رویداد (مثلا onclick) کمبو اول نمایش داده میشه!
نمی دونم خوب تونستم مشکل را طرح کنم یا نه ؟
در حقیقت من می خوام هر دو. کمبو در لود فرم نمایش یابند و بعد از اینکه داده کمبو اول انتخاب شد، داده های کمبو دوم ریخته شود!

mohmadd
سه شنبه 12 مرداد 1389, 13:55 عصر
امکان دازه که سورس رو بزارید اینجا ؟

من فکر کنم که باید به box1
event onselect داد که اگر کاربر چیزی رو انتخاب کرد تابعی اجرا بشه و مقدار اونو بگیره و با ajax بفرسته به سرور
و بعد مقدار اومده از سرور رو کپی کنه تو div box2(اینجا خیلی کارا میشه کرد این یه روش بود)

ویرایش :
باید از onchange استفاده بکنی

binyaft
سه شنبه 12 مرداد 1389, 14:53 عصر
خوب با jquery مقدار کمبو باکس اول رو در روال onclick بخونید و پس از پردازش وارد دومی کنید

xoogle.ir
سه شنبه 12 مرداد 1389, 16:13 عصر
اگه میشه یه نمونه کد برای این موضوع بذارید چون منم به همچین چیزی احتیاج دارم.

mohmadd
سه شنبه 12 مرداد 1389, 17:40 عصر
اگه میشه یه نمونه کد برای این موضوع بذارید چون منم به همچین چیزی احتیاج دارم.




<script type="text/javascript">
function getvalue()
{
alert(document.getElementById('cars').value);
}
</script>

<select id="cars" onchange="getvalue()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>

mohammad-gh
سه شنبه 12 مرداد 1389, 19:14 عصر
من اینطور نوشتم (کدی که بعد از انتخاب اول، کمبو دوم را نشان می دهد)»


<select id="cars" onchange="transdata(this.value)">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<div id="loading" style="display:none;" align="center"><img src="images\loading.gif" alt="loading..." /></div>
<div style="width:100%" id="response"></div>

که جواب رو تو تگ <div> برمی گردونه
تابع transdata رو اینطور :

function transData(id) {
xmlHttp = GetXmlHttpObject();
if (xmlHttp == null) {
alert ('مرورگر شما Ajax را پشتیبانی نمی کند.');
return;
}
var ids=id;
var select=sel;
var url = 'selectmenu.php';
url = url + '?v1=' + ids;
url = url + '&v2=' + select;
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.open('GET', url, true);
xmlHttp.send(null);
}
و در نهایت فایل php که جواب رو باتوجه به انتخاب بر می گردونه اینطور :


<select id="cars2" ()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
همانطور که میبینید عیب کار اینجاست که وقتی انتخاب انجام گرفت ، کمبو دوم نشان داده می شود

mohammad-gh
پنج شنبه 14 مرداد 1389, 12:27 عصر
یه مثال ساده برای این مورد همون انتخاب استان و نمایش شهرهای آن است.
وقتی استانی را نتخاب می کنیم در کمبو دوم شهرهای استان را نشان می دهد
لطفا یکی یه نونه کد بده