2014-11-03 3 views
0

Я работаю с codeigniter и jquery ajax. У меня есть некоторые несоответствия b/w моего приложения локально на wamp (отлично работает) и мое развернутое приложение (не так много). После того, как можно предложил исправить это преобразовать АЯКС относительных путей в абсолютные для AJAX, так это выглядит:Переменная Javascript не оценивается в проекте codeigniter

url: "YOURBASEPATH/AjaxController/update", 
location.href = "YOURBASEPATH/pan_controller/my_detail"; 

После Convert ajax relative paths to absolute paths with codeigniter я изменил мой код:

В вашем разделе заголовка просто добавьте следующий скрипт ,

<script type="text/javascript"> 
    var BASE_URL = "<?php echo base_url();?>"; 
</script> 

$.ajax({a 
       type: "POST", 
       url: BASE_URL+"AjaxController/update", 
       data:{ i : searchIDs, m : message },       
       dataType: 'json', 
       .done(function() { 
        alert("REFRESHING.."); 
        location.href = BASE_URL+"pan_controller/my_detail"; 
       }); 
       } 
      }) 

Я думал, что это будет работать, но по какой-то причине base_url не признается в качестве переменной, и вместо того, чтобы видеть в течение, например:

url: "YOURBASEPATH/AjaxController/update", 

Я вижу:

url: BASE_URL+ "/AjaxController/update", 

Когда я посмотрите на источник.

Я не вижу ошибок в своем редакторе. Любые идеи, почему это не работает?

редактировать:

case "Set": 
       var message = $('#send_message').val() 
       if (searchIDs.length>0){ 
       console.log(BASE_URL+ "Update/update"); 

       $.ajax({ 
        type: "POST", 
        url: BASE_URL+"Update/update", 
        data:{ i : searchIDs, m : message },       
        dataType: 'json', 

        .done(function() { 
         alert("REFRESHING.."); 
         location.href = BASE_URL+"pan_controller/detail"; 
         }); 
       }) 


       } else { alert("nothing checked") } 
       break; 
+1

Javascript побежал стороне клиента - просмотреть исходный код показывает вам код, а не его вывод. Попробуйте добавить 'console.log (BASE_URL +"/AjaxController/update ");' или если вы не используете браузер с предупреждением js console (BASE_URL + "/ AjaxController/update"); 'и вы должны увидеть полный URL-адрес – Steve

+0

Я уверен, что 'base_url()' возвращает 'YOURBASEPATH''. Попробуйте посмотреть, что создано этой линией. –

+0

Как сказал @Steve, вы видите, что вы должны видеть в источнике для этой строки. Следуйте его совету, а также посмотрите в исходное место, где вы выполняете эхо PHP и устанавливаете 'BASE_URL'.Это должно показать вам «var BASE_URL =»/YOURBASEPATH »;' – JAAulde

ответ

1

Ваш синтаксис неверен. Если вы хотите функцию для запуска после запроса AJAX, используйте complete обратный вызов, и вы должны также использовать успех и ошибок обратные вызовы для отладки:

case "Set": 
    var message = $('#send_message').val(); 
    if (searchIDs.length>0){ 
     console.log(BASE_URL+ "Update/update"); 

     $.ajax({ 
      type: "POST", 
      url: BASE_URL+"Update/update", 
      data:{ i : searchIDs, m : message }, 
      dataType: 'json', 
      success: function(data) { 
       console.log(data); 
      }, 
      error: function(data) { 
       console.log(data); 
      } 
      complete: function() { 
       alert("REFRESHING.."); 
       location.href = BASE_URL+"pan_controller/detail"; 
      } 
    }) 


    } else { 
     alert("nothing checked"); 
    } 
break; 
+0

Спасибо, это вместе с http://jshint.com/ помогло мне. – user61629

0

Что случилось с этим?

url: "/AjaxController/update", 
+0

, если ваша текущая страница 'http: // localhost/folder/controller' будет распознана как' http: // localhost/AjaxController/update', но это должно быть 'http: // localhost/folder/AjaxController/update' –

+0

Но 'http: // localhost /' - это именно то, что будет возвращено base_url(). – jcorry

+0

, если вы установите '$ config ['base_url'] \t = 'http: // localhost/folder /';' он вернет 'http: // localhost/folder/';' –

1

Я ответил на этот вопрос ранее. Здесь я настоятельно рекомендовал вам сделать следующее вещь шага за шагом:

  1. Обновить ваш базовый адрес в config.php на линии 17.
  2. Открыть заголовок часть заголовка вашего просмотра файлов и поместить следующий скрипт перед вызовом любое пользовательское JQuery или файл JavaScript:

    var BASE_URL = "<?php echo base_url();?>"; 
    
  3. Теперь в пользовательских JQuery файл, который вы получите base_url как переменные.

Но помните об этом, вам нужно использовать только один файл заголовка для всего проекта.

Если у вас возникли какие-либо проблемы, пожалуйста, поделитесь со мной структурой вашего представления.

+0

Еще раз спасибо за это. – user61629

+0

Добро пожаловать. В любом случае, если ответ помог вам, пожалуйста, примите его. Это поможет вам получить больше решений. –

+0

Ариф, еще раз спасибо. В этом случае это мне не помогло, но я поддержал это, потому что это полезная информация, и я ценю, что вы нашли время, чтобы помочь. С наилучшими пожеланиями, - Билл – user61629

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