2016-03-08 2 views
0

Я создаю веб-приложение в CodeIgniter, и я использую jQuery и AJAX. Я создал все приложение локально (используя XAMPP), и все работало нормально. После того как я загрузил приложение на свой веб-хостинг, один AJAX продолжает терпеть неудачу. Вот часть кода:Ошибка внутреннего сервера AJAX и 500

// Get all form inputs 
var inputs = $('#app-options-existing-form :input[type="text"]'); 

// Put them in object as name=>value 
var data = {}; 

for(i=0; i<inputs.length; i++) { 
    data[inputs[i]["name"]] = inputs[i]["value"]; 
} 

// Put loader while AJAX is working 
$(".app-content-container").html('<center><img class="loader" src="<?php echo base_url();?>/img/loader.gif" ></center>'); 

console.log(data); 

// Generate POST request 
$.post("<?php echo site_url("admin/ajax_app_options"); ?>", 
{"add_existing_form_submited" : true, "data" : data2}, 
function (data) { 
    alert("test" + data);  
}); 

Вот консоль показывает ошибку и результат console.log (данные) Error and result of console.log(data)

Во-первых, я думал, что ключ («d1d1d1») была проблема потому что я сначала использовал «1-1-1», и после того, как я его вручную изменил, он работал. Но потом я все изменил в «d1d1d1», и он не работает снова. Как я уже сказал, он работает на XAMPP, но не на сервере. Может возникнуть проблема с использованием полного URL-адреса для AJAX, а не для относительного? Но я использую его и в других запросах AJAX, и он работает.

+2

Предложите проверить вкладку сети отладчика браузера. Он отобразит все сведения о запросе ajax. И от этого проблема, вероятно, будет очевидна. Например, являются ли url и данные ожидаемыми? – Roberto

+0

О, извините, что я глуп. Я даже не знал о вкладке «Сеть». Каждый раз, когда у меня была проблема с AJAX, я бы отлаживал ее вручную, отображая данные ошибки, но на этот раз, так как это была ошибка 500, я не смог этого сделать. После того, как я взглянул на вкладку «Сеть», я смог увидеть ошибку Codeigniter, потому что я использовал неправильное имя таблицы в базе данных. – XploD

ответ

1

Довольно, что вы проблема в том, что этот парень '<center><img class="loader" src="<?php echo base_url();?>/img/loader.gif" ></center>'

Ваш источник собирается выводить буквально <?php echo base_url();?>/img/loader.gif, который, конечно, не реальная связь. Поэтому это ресурс, который нельзя загрузить.

Вы можете попробовать вместо использования: '<center><img class="loader" src="/img/loader.gif" ></center>'

base_url() функция только собирается возвращать «/» в любом случае.

Важно! В общем, вы не можете писать php в javascript. Или это будет серьезная дыра в безопасности, которая даст каждому пользователю, который посещает ваш сайт, неограниченный доступ к вашему серверу.

+0

Javascript-код находится внутри файла PHP, поэтому эта функция работает правильно. Как кто-то может получить доступ к моему серверу с этим? – XploD

+1

Извините. Я не уверен, что понимаю ваш случай использования. Типичный веб-сайт использует клиентскую часть javscript и сервер php-сервера. Если вы используете серверную часть javascript, я не понимаю, что должен делать ваш код (ajax будет бессмысленным). Если вы действительно используете клиентскую сторону javascript, тогда abiliy, чтобы поместить '' В файл javascript и выполнить его, я могу делать все, включая SQL-инъекцию, PHP-инъекцию, полный доступ к файлам и т. Д. Просто напишите консоль браузера. Я не думаю, что любой браузер позволяет это. Вот почему ваш код не работает. – danielson317

+0

Я не знаю, знакомы ли вы с Codeigniter. Если да, я использую Javascript как представление. Таким образом, каждый Javascript, а не отдельный файл .js, находится в файле PHP, который представляет собой представление. Содержимое этого файла отражается на части основного изображения . Итак, когда вы смотрите на исходный код, вы не увидите src = "/Img/loader.gif", но вместо этого вы увидите src = "http: // www .example.com/img/loader.gif ". – XploD

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