2013-04-03 2 views
0

Я получаю необычную проблему, и я был бы очень признателен за вашу помощь. Я использую CodeIgniter и пытаюсь сделать вызов Ajax из представления. Проблема заключается в том, когда я выбираю тип: «POST». Я всегда получаю сообщение об ошибке: POST http://localhost/scratchcard/index.php/ajax/ajax/create?callback=jQuery1910195569250266999_1365021602115 500 (Внутренняя ошибка сервера) в консоли.Codeigniter Ajax POST issue

мой взгляд что-то вроде этого:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <link rel="shortcut icon" href="http://localhost/scratchcard//images/favicon.ico" /> 
    <link rel="stylesheet" href="http://localhost/scratchcard//css/demo.css" type="text/css" media="screen" title="no title" charset="utf-8"/> 
    <script src="http://localhost/scratchcard/js/jquery-1.9.1.js" type="text/javascript" charset="utf-8"></script> 
    <script src="http://localhost/scratchcard/js/yui.formalize.js" type="text/javascript" charset="utf-8"></script> 
    <script src="http://localhost/scratchcard/js/scratchcard.js" type="text/javascript" charset="utf-8"></script> 
    <input type="hidden" name="url" id="url" value="http://localhost/scratchcard/" /> 
    <meta charset="utf-8"><div id="main_container"> 
    <div id="create_scratch_card" align="center"> 
     <label id="form_count">Create New Scratch Cards</label> 
     <select id="count_select"> 
      <option value=""> Select the number of cards to be generated </option> 
      <option value="10">10</option> 
      <option value="50">50</option> 
      <option value="100">100</option> 
     </select> 
     <br /><p> </p> 
     <label id="form_amount">Amount of each Card</label> 
     <select id="amount_select"> 
      <option value="" > Select the amount of the cards to be genarated</option> 
      <option value="10">10</option> 
      <option value="50">50</option> 
      <option value="100">100</option> 
     </select> 
     <br /><p> </p> 
     <input type="button" id="create_button" value="Create"> 
    </div> 
    <div id="ajax_result" align="center"> 
     <img src="http://localhost/scratchcard/images/ajax-loader.gif" style="max-width:100%;" alt="Processing"> 
    </div> 
</div> 

</body> 
</html> 

моих ScratchCard.js как это:

$(document).ready(function(){ 
    var url_link=$("#url").val(); 

    $("#create_button").click(function(){ 
     /*$.ajax({ 
      url:"<?=base_url()?>index.php/ajax/ajax/create", 
      type:"POST", 
      data:{ 
       count: $("#count_select").val(); 
       amount:$("#form_amoutn").val(); 

      } 
     });*/ 
     if($("#count_select option:selected").val().length==0){ 
      alert("You Must Select a Count Value first"); 
      $("#count_select").focus(); 
     } 
     else if($("#amount_select option:selected").val().length==0) 
     { 
         alert("You Must Select a Amount Value first"); 
         $("#amount_select").focus(); 
     } 
      else{ 


        $.ajax({ 

       type:"POST", 
       dataType: 'jsonp', 
       data:{ 
          count: $("#count_select option:selected").val(), 
          amount:$("#amount_select option:selected").val() 
         }, 
         url:url_link+"index.php/ajax/ajax/create", 
       beforeSend:function(){ 
        $("ajax_result").show(); 
       }, 

       complete:function(response){ 
        alert(response.reply); 

       }, 


      });    
      } 


    }); 
}); 

и, наконец, ajax.php:

<?php 
    /** 
    * 
    */ 
    class ajax extends CI_Controller { 




public function create(){ 


     $this->output->set_status_header('200'); 
    $this->output->set_header("Content-Type: application/javascript"); 
     $this->output 
    ->set_content_type('application/json') 
    ->set_output(json_encode(array('reply' => 'created'))); 


    } 
} 
?> 

Можете ли вы указать мне на любые ошибки или какое-либо решение о том, как их исправить?

+0

если ваш получить 500 типа ошибка ваша ошибка на стороне сервера не в сценарии jquery. Проверьте журнал своего сервера, чтобы увидеть точную ошибку, или просто посетите URL-адрес ajax в своем браузере с жестко запрограммированными данными, чтобы выяснить природу ошибки. – Rooster

+0

@John B, я посетил URL-адрес моего браузера, и он работает, показывая {reply: created} как следует. Он также работает, когда я меняю сообщение frm для ajax, чтобы получить. Связано ли это с какой-либо проблемой конфигурации с кодом, которую я пропустил? – muttalebm

ответ

0

тип данных должен быть JSon только

dataType: 'json' 

JSONP для кросс Домиана и ваш URL выглядит как его в том же домене, и для данных, вы можете просто сделать

data:{count: $("#count_select").val(),amount:$("#amount_select").val()} 
+0

Спасибо за ответ, изменен на json, но по-прежнему та же проблема. Не удалось загрузить ресурс: сервер ответил со статусом 500 (Внутренняя ошибка сервера) – muttalebm

+0

На вкладке ответа Chrome выполните следующее: Запрошенное действие не разрешено. – muttalebm

+0

- ваш url 'ajax/ajax/create' (думаю, это shuld be)' ajax/create' – bipen