PDA

View Full Version : سوال: درخواست یک کد Ajax برای php



sardarn
پنج شنبه 29 خرداد 1393, 20:41 عصر
سلام
خسته نباشید.یه درخواست داشتم.
می خواستم یک نمونه کد بهم بدید که وقتی مقدار انتخابی در select تغییر کنه با استفاده از ajax مقدار عدد داخل یک لیبل تغییر کنه.دستورات اینطوریکه کاربر بعد از انتخاب یک گزینه دیگه با ajax یک مقدار به همون صفحه با متد GET فرستاده می شهو با دستورات php یک سری پردازش انجام می شه و یک مبلغ بدست میاد حالا بدون اینکه نیاز باشه صفحه دوباره کامل لود باشه مبلغ نهایی باید تغییر کنه و در لیبل خودش قرار بگیره.


ممنون

cpuram
پنج شنبه 29 خرداد 1393, 21:30 عصر
از jquery استفاده کنید تا احتمال خطا به حداقل برسه.
http://api.jquery.com/jquery.ajax/

sardarn
پنج شنبه 29 خرداد 1393, 22:30 عصر
از jquery استفاده کنید تا احتمال خطا به حداقل برسه.
http://api.jquery.com/jquery.ajax/

سلام
لطفا اینو یکم توضیح بدید.
من الان چند تا آیتم هست که کاربر باید گزینه مورد نظرش انتخاب کنه.
گزینه اول دسته هست وقتی کاربر دسته خاصی انتخاب کنه گزینه های خدمات در سلکت بعدی باید طبق اون گزینه قبل تغییر کنه بعد با توجه به انتخاب بعدیش درجایی از صفحه که مبلغ کل نوشته مقدار خاصی به مبلغ کل اضاف بشه.و چند اتخاب دیگر همداره که با توجه به اینکه کدوم گزینه انتخاب می کنه مقداری به فاکتور اضاف می شه؟
حالاکد این رو چه طور باید بنویسم؟

ببخشید زیاد بود
ممنون

sardarn
پنج شنبه 29 خرداد 1393, 23:15 عصر
نمونه چیزی که می خوام:
http://maxnet.ir/site/online-adsl

مثلا بعد انتخاب سرویس هموناج مقادیر فیلد بعد تغییر می کنه و مقدار فاکتور تغییر می کنه

id1385
پنج شنبه 29 خرداد 1393, 23:48 عصر
سلام
این نمونه رو ببین
http://barnamenevis.org/showthread.php?362761-%D9%86%D9%85%D9%88%D9%86%D9%87-%DA%A9%D8%A7%D9%85%D9%84-%D8%AB%D8%A8%D8%AA-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%D8%8C-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D9%88-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-jquery-%D9%88-php&p=1601355&viewfull=1#post1601355

cpuram
پنج شنبه 29 خرداد 1393, 23:50 عصر
jquery خیلی گسترده هست.مثلا این یه نمونه
$('#test').load("table.php?action="+document.getElementById('testfield').value);

id1385
جمعه 30 خرداد 1393, 00:19 صبح
بهترین کار اینه که شما جیکوئری رو یاد بگیرید، اینی که دوستمون میخواد اینه که بتونه اطلاعات رو بصورت get یا post به یه فایل بفرسته و نتیجه رو نمایش بده
سکلت کردن المنت ها رو احتمالاً بلد باشی و اگر هم نه با یه جستجوی ساده میتونی یاد بگیری.

مثال:
یک باتن به اسم kCreat داریم که با کلیک روی اون اطلاعات یک سری تکست باکس رو می فرستیم به فایل تا اونو ذخیره کنه توی دیتابیس

$("button#kCreat").bind("click", function() {
var tName = $("input#kName");
var tDesc = $("input#kDescribe").val();
var tFaal = $("input#kActive").is(':checked');
var tPrivate = $("input#kPrivate").is(':checked');
var tData = new Array();
if (tName.val() === "" || tName.val() === null) {
tName.focus();
alert(insert_name);
return;
}
tData[tData.length] = tName.val();
tData[tData.length] = tDesc;
tData[tData.length] = tFaal;
tData[tData.length] = $(this).attr('data-type');
tData[tData.length] = $(this).attr('data-token') === "undefined" || $(this).attr('data-token') === "" ? "Null" : $(this).attr('data-token');
tData[tData.length] = tPrivate;
savetData(tData, "");
});


همونطور که می بینید اطلاعات رو بعد از اینکه می خونه توی یک آرایه به اسم tData ذخیره و اونو به یک فانکشن (savetData) می فرسته
خلاصه شده اون فانکشن

function savetData(eData, e) {
$.post(erl, {data: eData}, function(Response) {
//alert(Response);
if (Response && Response !== "") {
var json = $.parseJSON(Response);
​ var result = json[0];
// add response

if (result === "added") {
$("div#tpan input").val("");
set_values();
r_loading();
$("#kCreat").html(default_text);
}


}


}); // post
}


بخاطر داشته باشید که erl خیلی مهمه، آدرس باید شناسایی بشه و اگه شناسایی نشه برنامه قادر نخواهد بود ادامه عملیات رو انجام بده.
بعد از اینکه به یک فایل فرستادیم در اون اعتبار سنجی ها و عملیات رو انجام می دیم همونطوری که در فانکشن بالا می بینید بعد از اینکه اطلاعات برگشتی میاد اونو می خونه و اگه برابر با added بود عملیاتی رو انجام میده و این میتونه انواع اعتبار سنجی ها باشه

خلاصه ای از فایل php


switch ($__req) {
case "add":
return addNew($data_array);
break;

function addNew($data_array) {
$db = _connectDb();
if (!$db) {
return json_encode(array('Error', $db_error));
}
//check foo dublicat data
$where = $db->filter($data_array[0]);
$count = $db->countOf("k_kalaha_khadamat", "`khadamat_name` = '{$where}'");
if ($count > 0) {
return json_encode(array('Error', sprintf($GLOBALS["dubl"], $data_array[0])));
}


// create add query and save new data
if (strtolower($data_array[3]) === "add") {
$tAdmin = intval($data_array[5] === "true" || $data_array[5] === true ? 1 : 0);
$str_sql = "INSERT INTO `k_kalaha_khadamat` (`khadamat_name`, `khadamat_sharh`, `khadamat_faal`, `khadamat_ijad_tavasote`, `khadamat_tarikh_ijad`, `khadamat_private`) VALUES ('%s','%s', '%s', '%s', '%s', '%s');";
$str_sql = sprintf($str_sql, $db->filter($data_array[0]), $db->filter($data_array[1]), $db->filter($data_array[2]), globals::admin_dsiplay(true), date("Y-m-d H:m:s"), $db->filter($tAdmin));
$result = $db->run($str_sql);
if ($result) {
return json_encode(array('added', 'ok'));
}
}
}




موفق باشید

مهرداد سیف زاده
جمعه 30 خرداد 1393, 09:19 صبح
فیلم آموزش سریع ajax و php و pdo میتونه مفید باشه
http://www.aparat.com/v/nBJIo

sardarn
جمعه 30 خرداد 1393, 16:22 عصر
سلام
ممنون به خاطر پاسخی که دادید.من تا الان به این مطلب رسیدم:
این کدی هست که داخل یک فایل js گذاشتم

$("select#service").change(function () {
var qtd = $("select#service option:selected").val();


url="func.php?type="+qtd;
$.get(url);
$("#card").html(code morede niaz);

}

تا اینجا وقتی کاربر یک گزینه دیگه از فیلد service اتخاب کنه فعال می شه و مقادیر یک فیلد دیگه تغییر می ده.
مقدار value فیلد سرویس باید به صفحه func.php با متد get فرستاده بشه.توی اون صفحه مقادیر لازم مثل
<option value="1">1</option>
چاپ می شه حالا می خوام یک تابعی باشه مثل xmlHttp.responseText که خروجی اون صفحه رو بیارم به جای عبارت code morede niaz در عبارت بالا بگذارم تا قسمت مورد نظرم ویرایش بشه.
حالا باید چه تابعی استفاده کنم اگه می شه از همین تابع در این فایل استفاده کرد به چه صورتی هست؟

من با دستور get بالا مقادیر لازم به صفحه مورد نظر فرستادم حالا فرض کنید اون صفحهاین مقادیر چاپ کرده:

<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>

حالا چه طور این مقادیر بتونم به صفحه js برگردونم تا داخل

$("#card").html(

بگذارم؟


ممنون

id1385
جمعه 30 خرداد 1393, 23:34 عصر
$("select#service").change(function () {
var qtd = $("select#service option:selected").val();
var obj = $("#card");
var url="func.php?type="+qtd;
var result;

// get values, vali chera get estefade mikoni ?
$.get(url, function( data ) {
obj.html( data );
});

/*
toye file func.php bad az etebar sanji, natije ro ECHO kon
*/
});

sardarn
شنبه 31 خرداد 1393, 10:23 صبح
سلام
کدی که فرستاید کار نکرد.با post هم این کار انجام بشه مشکلی نیست فقط می خوام این قسمت درست کنم.
آدرس صفحه:
http://pcndownload.ir/test/test.php
الان محتویات صفحه من اینه:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"><html class="js" xmlns="http://www.w3.org/1999/xhtml" xml:lang="fa" version="XHTML+RDFa 1.0" dir="rtl"><head profile="http://www.w3.org/1999/xhtml/vocab">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">


<title>Test</title>
<script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>



<script type="text/javascript">
$("select#service").change(function () {
var qtd = $("select#service option:selected").val();
var obj = $("#card");
var url="func.php?type="+qtd;
var result;

// get values, vali chera get estefade mikoni ?
$.get(url, function( data ) {
obj.html( data );
});


});
</script>


</head>
<body>


<select id="service" name="service" >


<option value="1" >1</option>
<option value="2" >2</option>
<option value="3" >3</option>
<option value="4" >4</option>
</select>
<br>
<select id="card" name="card" >


<option value="1" >1</option>
<option value="2" >2</option>
<option value="3" >3</option>
<option value="4" >4</option>
</select>



</body>
</html>


محتویات صفحه func:


<?php
echo(' <option value="21" >121</option> <option value="13" >121</option> <option value="14" >1231</option>');?>

حالا وقتی مقدار service تغییر کنه باید مقدار card اون آپشن هایی باشه که چاپ کردم ولی اصلا کار نمی کنه.
مشکل کجاست؟

id1385
شنبه 31 خرداد 1393, 18:16 عصر
چون و.قت امتحاناست و منم شدیداً درگیر امتحانات هستم [بگو مرگ بر درس، بگو مرگ بر امتحان]
یه نمونه ارسال و دریافت اطلاعات به و از فایل php با jq رو نوشتم، یه نگاه بکنی سادست

محتویات فایل js:

$(document).ready(function() {
//alert('Jq loaded');
var status = $("div#stt");
var elements = $("div#elements");
var erl = "php/php.php";

$("select#condition").bind('change', function() {
var val = $.trim($("select#condition :selected").val());
if(val !== ""){
savetData(val);
}else{
status.css("display","none");
alert( "\u06cc\u06a9 \u0645\u0648\u0631\u062f \u0631\u0627 \u0628\u0631\u06af\u0632\u06cc\u0646\u06cc\u062f" );
}
});



function savetData(eData) {
$.post(erl, {data: eData}, function(Response) {
//alert(Response);
if (Response && Response !== "") {
var json = $.parseJSON(Response);
var result = json[0];


if (result === "Success") {
status.html(json[1]).css("background-color", "#F6FFDA");
}

else{
status.html("<b>Error: </b>"+json[1]).css("background-color", "#FFE1DA");
}

status.css("display","block");
}
}); // post
}

});



محتویات فایل php:


<?php
if (strtolower($_SERVER['REQUEST_METHOD']) !== 'post') {
return FALSE;
}


if (isset($_REQUEST['data']) ) {
echo sample( $_POST['data'] );
} else {
die(json_encode(array('Error', "Unknown")));
}


function sample($input = ""){
return json_encode(array('Success',"<b>Result:</b> You have send \"$input\" into \"php\" file via jQ and call a function"));