2010-03-02 5 views
0

로그인 한 사용자가 사용할 수있는 페이지에 가입 링크가 있습니다. 나는 .post을하고 PHP가jQuery 가입 링크 토글

if ($subscription == true) { 
    echo 'Subscribed'; 
} else { 
    echo 'Click to subscribe'; 
} 

그러나 반환 무엇인지 반향 수있는 페이지의 링크를 토글

, 아무 문제 없습니다, 어떤 버그 나 내가의 같은 부분을 작성해야한다는 것입니다 내 템플릿 파일의 코드. 그러나 페이지가로드 될 때 즉시이를 위해 아약스를 호출 할 수 있습니다.

가장 좋은 방법은 무엇입니까?

답변

0

좋아, PHP로 수정하기로 결정했습니다. 페이지를 쳤을 때 지금은 통화에 대한 :

http://url/module/controller/check/id/ $ ID/객체/$ OBJECT_NAME

내 사업부로를 ajax'd. 그 다음은 그것을로 이동하고 HTML에서 반환 값을두고 클릭 한 경우

http://url/module/controller/toggle/id/ $ 아이디/객체/$ OBJECT_NAME

클래스 :

<?php 


class User_SubscriptionController extends Zend_Controller_Action { 


function init() { 
    $contextSwitch = $this->_helper->getHelper('ForceContext'); 
    $userSess  = new Zend_Session_Namespace('User'); 
    $this->user  = $userSess->model; 

    $this->id   = $this->_getParam('id'); 
    $this->object_name = $this->_getParam('object'); 

    if (empty($this->id) || empty($this->object_name)) { 
     throw new exception('Id and Object name must be passed'); 
    } 

} 


public function checkAction() { 

    $subscription = Eurocreme_Baseclass::load_by_fields(array('object_name' => $this->object_name, 'object_id' => $this->id, 'user_id' => $this->user->id, 'table_name' => 'Subscription'), 1); 

    if (is_object($subscription)) { 
     echo 'Click To Un-Susbscribe'; 
    } else { 
     echo 'Click To Subscribe'; 
    } 
    exit; 
} 


public function toggleAction() { 

    $subscription = Eurocreme_Baseclass::load_by_fields(array('object_name' => $this->object_name, 'object_id' => $this->id, 'user_id' => $this->user->id, 'table_name' => 'Subscription'), 1); 

    if (is_object($subscription)) { 
     $subscription->delete(); 
    } else { 
     $subscription = Eurocreme_Baseclass::create(array('object_name' => $this->object_name, 'object_id' => $this->id, 'user_id' => $this->user->id, 'table_name' => 'Subscription', 'frequency' => 1)); 
    } 

    $this->checkAction(); 
} 

}

하고 뷰 코드는 :

<?php $this->headScript()->captureStart(); ?> 
$('document').ready(function() { 

    $.get('/user/subscription/check/id/<?php echo $this->object->id; ?>/object/Movie', function(data) { 
     $('#subscription_link').html(data); 
    }); 

    $("#subscription_link").click(function(){ 
     $.get('/user/subscription/toggle/id/<?php echo $this->object->id; ?>/object/Movie', function(data) { 
      $('#subscription_link').html(data); 
     }); 
     return true; 
    }); 


}); 
<?php $this->headScript()->captureEnd(); ?>