PDA

View Full Version : مشکل ارسال و دریافت ارایه با ایجکس



marys_farahani
پنج شنبه 01 خرداد 1393, 10:34 صبح
سلام

من میخوام سه تا پارامتر با ایجکس بفرستم برای یه صفحه php و یه خروجی ارایه بگیرم ظاهرا مقدار ارسال میشه اما اطلاعاتی بر نمیگرده ارروی هم ایجاد نمیشه

http://up.p30parsi.com/out.php/i199555_01.jpg (http://up.p30parsi.com)

ظاهرا مقدار ارسال میشه اما نمیدونم جرا خروجی ندارم
http://up.p30parsi.com/out.php/i199556_02.jpg (http://up.p30parsi.com)


قرار وقتی رو مقدار select تغییر میده سه تا مقدار ارسال کنه به یه صفحه php


<select id="DropDownList{$obj->basketAll[i].orderdetailsid}" data-max="2" commandname="Edit" onchange="sendcountproduct('{$obj->basketAll[i].orderdetailsid}','{$obj->basketAll[i].users_id}');" name="">
{foreach from=$obj->num key=k item=v}
{if $obj->basketAll[i].count == $v}
<option value="{$v}" selected="selected">{$v}</option>
{else}
<option value="{$v}">{$v}</option>
{/if}
{/foreach}
</select>

اینم کد جی کوئریم


function sendcountproduct(id,usersID)
{
var select = $("#DropDownList"+id+"").val();
$.ajax({
type: 'POST',
url: 'business/ajaxFunctions/basket.php',
data: JSON.stringify({ "ajaxcountproduct":select, "ajaxIDOrderdetailsid":id , "ajaxusersIDProduct":usersID }),
contentType : 'application/json',
cache: false,
success: function(result){
$('#popupCartItems').html(result['countall']);
$('#sumAllProduct').html(result['sum']);
},
});
}

اینم کدهای صفحه php که قرار خروجی به صورت ارایه برگردونه


if(isset($_POST['ajaxcountproduct']) && isset($_POST['ajaxIDOrderdetailsid']) && isset($_POST['ajaxusersIDProduct']))
{
$count = (int)$_POST['ajaxcountproduct'];
$id = (int)$_POST['ajaxIDOrderdetailsid'];
if(BASKET::orderdetails_InsertCalculate($id,$count ))
{
$sum = "";
$result = BASKET::orders_SelectCountAlll($_POST['ajaxusersIDProduct']);
$marys = BASKET::orders_SelectBasketAll($_POST['ajaxusersIDProduct']);
for($i=0;count($marys)>$i;$i++)
{
$marys[$i]['sum'] = $marys[$i]['count'] * $marys[$i]['price'];
$sum += $marys[$i]['sum'];
}
$array = array('countall'=>$result['countall'],'sum'=>"$sum");
echo json_encode($array);
}
}


ممنون میشم راهنماییم کنید.:لبخندساده:

MMSHFE
پنج شنبه 01 خرداد 1393, 10:57 صبح
سمت سرور با json_encode کدها رو تبدیل به JSON کنید و سمت کلاینت هم اینطوری بخونید:
for(var i in json_data) {
// i is key
// json_data[i] is value
}

marys_farahani
پنج شنبه 01 خرداد 1393, 11:11 صبح
سمت سرور با json_encode کدها رو تبدیل به JSON کنید و سمت کلاینت هم اینطوری بخونید:
for(var i in json_data) {
// i is key
// json_data[i] is value
}


ببخشید یه سوال با روش post وقتی اطلاعات میفرستم اولش چک میکنم که این مقدار وجود داشته باشه
برای این روش چطوری باید چک کنم اگه وجود داشت بعد حلقه اجرا بشه

ممنون میشم یکم بیشتر توضیح بدید :تشویق:

واقعا این همه اطلاعات شما ادم مجذوب میکنه

marys_farahani
پنج شنبه 01 خرداد 1393, 11:40 صبح
وقتی کد جی کوئریم به این شکل تغییر میدم


data: "ajaxcountproduct="+select,
dataType: 'json',

و سمت php


var_dump($_POST);



این دستور اجرا میکنم این خروجی میده


array(1) {
["ajaxcountproduct"]=>
string(1) "4"
}


نحوه ارسال مقدارم ظاهرا مشکل داره


data: JSON.stringify({ "ajaxcountproduct":select, "ajaxIDOrderdetailsid":id , "ajaxusersIDProduct":usersID }),
contentType : 'application/json',

marys_farahani
پنج شنبه 01 خرداد 1393, 11:41 صبح
جطوری میشه با ایجکس بیشتر از یک مقدار رو ارسال کرد ؟؟

numberone1
پنج شنبه 01 خرداد 1393, 11:54 صبح
با جاوا اسکریپت هم میتونید یک آرایه ایجاد کنید بعد بصورت json ارسال کنید
با json_decode تبدیل به آرایه کنید بعد با استفاده از یک حلقه foreach بخونید

marys_farahani
پنج شنبه 01 خرداد 1393, 12:03 عصر
کد جی کوئریم این شکلی تغییر دادم درست شد


function sendcountproduct(id,usersID)
{
var select = $("#DropDownList"+id+"").val();
$.ajax({
url: 'business/ajaxFunctions/basket.php',
type: 'POST',
data: 'ajaxcountproduct=' + select +'&ajaxIDOrderdetailsid=' + id + '&ajaxusersIDProduct=' + usersID ,
success:function(result)
{
$('#popupCartItems').html(result['countall']);
$('#sumAllProduct').html(result['sum']);
}
});
}


:تشویق: مرسی از دوستی که کمکم کرد