PDA

View Full Version : دیگه از دست CHtml::ajaxLink خسته شدم...! خواهشا کمکم کنید.



kazemimorteza
جمعه 23 آبان 1393, 12:59 عصر
درود.
میخوام با ajaxLink یه مقداری را به کنترلر سایت siteController بفرستم ولی .....
اکشنی که صفحه showFriendForm را فراخوانی میکند.(تمامی اکشن ها در siteController قرار دارند.)


public function actionShowFriend() {

try {
if (isset($_GET['id']) && !empty($_GET['id']) && is_numeric($_GET['id']))
$this->render("showFriendForm", array('id' => Yii::app()->input->stripClean($_GET['id'])));
else {
throw new CHttpException(404, "error.-Bad request");
}
} catch (Exception $e) {

$this->render("error", array('message' => $e->getMessage()));
}
}


صفحه showFriendForm :


echo CHtml::ajaxLink(
"Link Text",
array('site/ajaxRequest'),

array( // ajaxOptions
'type' => 'post',
'dataType'=>'text',
'beforeSend' => "function( request )
{
alert(request);
// Set up any pre-sending stuff like initializing progress indicators
}", 'complete' => "function( data )
{
// handle return data
alert( data );
}",

'data' => array( 'val1' => '1', 'val2' => '2' )
),
array( //htmlOptions
'class' => 'btn'
)
);

اکشن ajaxRequest


public function actionAjaxRequest() {
if (isset($_POST['val1'])) {
$val1 = $_POST['val1'];
$val2 = $_POST['val2'];
}
//
// Perform processing
//

//
// echo the AJAX response
//
echo "some sort of response";
return;
//Yii::app()->end();
}



سطح دسترسی ها:


///---------------------------
public function filters() {
return array(
'accessControl', // perform access control for CRUD operations
// we only allow deletion via POST request
);
}

public function accessRules() {
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions' => array('index', 'ajaxRequest', 'contact', 'error', 'createPost', 'showFriend'),
'users' => array('@'),
),
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions' => array('login', 'logout', 'signUp'),
'users' => array('*'),
),
array('deny', // deny all users
'users' => array('*'),
),
);
}

vahid78
شنبه 24 آبان 1393, 08:08 صبح
با سلام /

الان دقیقا مشکل چیه؟

salehforum
شنبه 24 آبان 1393, 08:37 صبح
دوست عزیز من پیشنهاد می کنم مستقیما از دستورات جی کوئری برای این موضوع استفاده کنید از نظر من واقعا راحت تر و ساده تر هست. اگه خواست در این مورد هم میتونم راهنماییتون کنم.
سایت ما رو ببینید:
http://payamkadeh.com

kazemimorteza
شنبه 24 آبان 1393, 10:00 صبح
با سلام /

الان دقیقا مشکل چیه؟
سلام.
درخواست سمت سرور نمیره.

kazemimorteza
شنبه 24 آبان 1393, 17:28 عصر
مشکل از اینجا بود که وقتی csrf را توی config>>main.php روشن گذاشته بودم دیگه ajaxLink کار نمی کرد.....!!!!! و با غیر فعال کردن اون کار میکنه.
config>>main.php


'request' => array(
'enableCsrfValidation' => true,
'class' => 'application.components.HttpRequest',
'enableCookieValidation' => true
),

و برای اینکه با فعال بودن csrf یه ajaxLink کار کنه ........


'YII_CSRF_TOKEN' => Yii::app()->request->csrfToken

ajaxLink:





echo CHtml::ajaxLink(
'Test request', // the link body (it will NOT be HTML-encoded.)
array('site/reqTest01Loading'), // the URL for the AJAX request. If empty, it is assumed to be the current URL.
array(
'type' => 'POST',
'dataType' => 'text',
'beforeSend' => 'function() {
alert("beforeSend");
}',
'success' => "function(data) {
alert(data);
}",
'data' => array( 'YII_CSRF_TOKEN' => Yii::app()->request->csrfToken,'val1' => '1', 'val2' => '2')
));