2013-09-02 2 views
0

Итак, я пытаюсь отправить только адрес электронной почты, используя ajax, чтобы заставить людей зарегистрироваться, и я понятия не имею, почему я получаю ошибку внутреннего сервера 500. Я новичок в вызовах ajax.Код Igniter Bonfire ajax request 500 внутренняя ошибка сервера

Я попытался выполнить следующий учебник: http://www.youtube.com/watch?v=TZv5cgua5f0 Однако я сделал так, как они сказали, и все еще, если я делаю сообщение со значениями, я не получаю желаемого метода контроллера. Если я добавлю данные в сообщение, я получаю внутреннюю ошибку сервера.

JavaScript:

$('#email_submit').click(function() 
    { 

     var form_data = 
     { 
      users_email: $('#users_email_address').val() 
     }; 
     $.ajax 
     ({ 
      url: 'http://localhost/myZone/NewsLetter/submit', 
      type: 'POST', 
      data: form_data, 
      success: function(msg) 
      { 
       alert(msg); 
      } 

     }); 

     return false; 
    }); 

HTML

<div id="email_newsletter_signup" class="ajax_email_block_signup" > 
     <h3>Sign up to the newsletter:</h3> 
     <?php echo form_error('signup_email','<div id="email_error" class="error">','</div>');?> 
     <h3>email: <input id="users_email_address" type="email" name="signup_email" value="<?php echo set_value('signup_email'); ?>" placeholder="Your email"/> </h3> 

     <input id="email_submit" type="submit" name="submit"/> 
    </div> 

Контроллер илит

public function index() 
     { 
       Assets::add_module_js('newsletter','email.js'); 
       //If included will be added 
       Template::set_block('email_block','email_block'); 
       Template::render(); 
     } 

    public function submit($email) 
      { 
       $success = $this->newsletter_model->set_unverified_email($email); 
//    if($success === FALSE) 
//    { 
//     Template::set_block('newsletter_error','newsletter_error'); 
//    } 
//    else 
//    { 
//     Template::set_block('newsletter_success','newsletter_success'); 
//    } 
//    Template::render(); 
       return; 
      } 

У меня есть точки останова внутри Представлять и просто привычка быть удар, когда я пост

Спасибо s

+0

Сделайте шаг назад и упростите задачу ajax, чтобы сузить возможные ошибки/проблемы. Например, попробуйте сделать простой запрос ajax на своем сервере в общий файл json или xml, чтобы гарантировать, что запрос выполняется без ошибки ответа. В качестве следующего шага попросите своего контроллера вернуть статическую информацию, чтобы убедиться, что контроллер фактически привязан к соответствующему виду. Между этими двумя испытаниями вы сможете сузить проблему. Возможно, обновите свои вопросы, как только вы это сделаете, и я уверен, что вы быстро получите ценный ответ. – Jbird

+0

Можете ли вы сказать мне имя контроллера? проверьте свой URL-адрес ajax, следуя этому формату «http: // localhost/CONTROLLER_NAME/FUNCTION_NAME» .. – rAjA

+0

У вас в первую очередь есть много мертвого кода внутри submit, я предлагаю удалить его, когда вы создаете примеры для публикации на этом веб-сайте , – hakre

ответ

0

добавить маркер CSRF к данным, прежде чем отправлять

$.ajax({ 
      type: "POST", 
      url: url, 
      data: {'<?php echo $this->security->get_csrf_token_name(); ?>':'<?php echo $this->security->get_csrf_hash(); ?>'} 

     }) 

CSRF токен должен быть отправить по каждому запросу, так что нужно быть указанными выше выдержками эха

Смежные вопросы