View Full Version : سوال: وقتی میخوایم متد دارای ورودی را از طریق تابع S.ajax فراخوانی کنیم متغیر ورودی رو چطور براش بفرستیم؟
majid784
یک شنبه 17 مهر 1390, 13:02 عصر
سلام
وقتی میخوایم متدی را از طریق تابع ajax.$ فراخوانی کنیم و اون متد یه ورودی میگیره، برای فرستادن متغیری که قراره ورودی اون تابع باشه، تو قسمت data چی باید بنویسیم. مثلا فرض کنید من میخوام متغیر search رو به تابع مورد نظر بفرستم.
function func1() {
var search= "test" ;
$.ajax({
type: "POST",
url: "AjaxApplications.aspx/ServerSideMethod",
data : ?'
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
error: OnError
});
}
من به شکل زیر نوشتم ولی error میده
data: "{'name': '" + search + "'}",
blackmak
یک شنبه 17 مهر 1390, 13:44 عصر
$(function()
{
var var1 = 'name';
var var2 = 'lastName';
var var3 = 'age';
/////----------------------------
$.ajax({ url: 'index.php', data:{name:var1,lastName:var2,age:var3}, type: 'POST',
success: function(respond)
{
alert(respond);
}
});
});
majid784
یک شنبه 17 مهر 1390, 15:31 عصر
$(function()
{
var var1 = 'name';
var var2 = 'lastName';
var var3 = 'age';
/////----------------------------
$.ajax({ url: 'index.php', data:{name:var1,lastName:var2,age:var3}, type: 'POST',
success: function(respond)
{
alert(respond);
}
});
});
اینجوری هم درست نشد! انواع و اقسام طرز نوشتن name : value رو امتحان کردم. با کوتیشن، بدون کوتیشن، هیچ جوری جواب نمیده ):
blackmak
یک شنبه 17 مهر 1390, 17:04 عصر
توجه کنید که فایلو از لوکال هاستون یا server اجرا کنید و فایل jQuery.js رو هم کنار فایلتون قرار بدید
البته من با php مثال زدم
index.html
<html>
<head>
<script src="jQuery.js" type="text/javascript" charset="utf-8"></script>
<script>
$(function()
{
/// ----- vaghti rooye link click kone
$('#calculate').click(function()
{
/// ----- moteghayerha az too inputha khoonde mishan
var var1 = $('#val1').val();
var var2 = $('#val2').val();
var var3 = $('#val3').val();
/// ----- post mishan be safheye cal.php
$.ajax({ type: 'POST', url: 'cal.php', data:{a:var1,b:var2,c:var3},
success: function(respond)
{
/// ----- pasokhe safheye cal.php mishine too respond va oonoo mirizim too div
$('#res').html(respond);
}
});
});
});
</script>
</head>
<body>
<input type="text" id="val1" name="1" /> +
<input type="text" id="val2" name="2" /> +
<input type="text" id="val3" name="3" />
<a href="#" id="calculate">Calculate</a><br>
<div id="res"></div>
</body>
</html>
cal.php
<?php
/// ---- meghdar a va b va c rikhte mishan too motaghayer
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
$d = $a + $b + $c;
/// ---- in mire too respond mishine too index.html
echo $d;
?>
موفق باشید
majid784
دوشنبه 18 مهر 1390, 10:32 صبح
توجه کنید که فایلو از لوکال هاستون یا server اجرا کنید و فایل jQuery.js رو هم کنار فایلتون قرار بدید
این کارها رو که کردم. من متد بدون ورودی را فراخوانی میکنم و بدون مشکل اجرا میشه. مشکل وقتیه که میخوام ورودی بفرستم پس به data مربوط میشه. دیتا رو هم دقیقا همین طوری که شما گفتی نوشتم. به فرض
var name = "test";
...
data = {thisname : name}
ولی درست اجرا نمیشه. Internal server error میده. به اشکال دیگه هم نوشتم. مثلا thisname رو توی کوتیشن بزارم. کل عبارت رو تو کوتیشن بزارم یا این که بنویسم : data = "{ thisname : " + name + "}" یا به شکل data = "{ 'thisname' : '" + name + "'}" ولی بازم درست نشد
blackmak
دوشنبه 18 مهر 1390, 21:54 عصر
ببینید data رو داخل کوتیشن یا دابل کوتیشن نذارید
data:{a:var1,b:var2,c:var3}
الاوه بر این Firebug (http://getfirebug.com/) این پلاگین واسه فایرفاکسو نصب کنید رو فایر فاکستون و اونجا ببینید چه اتفاقی میوفته وقتی Request پست میشه.
hadmo_ces
چهارشنبه 20 مهر 1390, 22:25 عصر
سورس کامل رو بذار تا بررسی کنیم.:متفکر:
blackmak
چهارشنبه 20 مهر 1390, 22:42 عصر
والا من برای ایشون سورسو کامل نوشتم دیگه نمیدونم چرا کارشون راه نمیفته .:متفکر:
majid784
یک شنبه 24 مهر 1390, 12:41 عصر
بعد از کلی بررسی یه چیز جالب دیدم. وقتی وب متد توی یک وب سرویس باشه کار میکنه ولی وقتی وب متد رو توی یک صفحه aspx استفاده میکنم کار نمیکنه. البته همونطور که قبلا گفتم برای وب متد بدون پارامتر ورودی، توی صفحه aspx هم بدون مشکل اجرا میشه. توی فایرباگ هم میگه : "Invalid web service call, missing value for parameter"
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.