2013-09-27 1 views
0

Я новичок в области jQuery/Ajax, и моя небольшая тестовая функция не работает. И моя страница также refreshingcan любой один помочь мнеПочему мой jquery ajax не работает на моей странице, а страница также обновляется

<script type="text/javascript" > 
 
$(document).ready(function() { 
 
    $("#ser_itm").change(function() { 
 
     var id=$(this).val(); 
 
     var dataString = 'id='+ id; 
 
     alert(dataString); 
 
     $.ajax({ 
 
      type: "POST", 
 
      url: "bar_pull.php", 
 
      data: dataString, 
 
      cache: false, 
 
      success: function(html) { 
 
       $("#tbl").html(html); 
 
      } 
 
     }); 
 
    }); 
 
});

+6

вы не должны использовать абсолютный путь к файлу, то он должен быть запущен на сервере – Shadow

+1

Кроме того, вам нужно передать ссылку функции обработчику, а не результат функции - удалите скобки в конце, например. '$ ('. linkDetails'). on ('click', getDetailsFromServer); –

ответ

2

Так что я собираюсь попытаться объяснить эти пункты более четко:


Вы не можете получить доступ к C:\Users\yah\Desktop\text.txt. Это server side path, ваш javascript работает на client side. Таким образом, это должен быть путь, который вы можете найти в своем браузере, что-то вроде /pathinURL/text.txt. Как это сделать, зависит от вашего хостинга технологии и т.д.


Ваши спины вызова также неправильно,

$('.linkDetails').on('click', getDetailsFromServer()); 

&

success: postToPage() 

они будут выполнять функцию, когда они hit (ну, на самом деле, он привязывает результат функции), а не когда событие происходит. Для того, чтобы эти работы вам необходимо удалить фигурные скобки:

$('.linkDetails').on('click', getDetailsFromServer); 

&

success: postToPage 

это то подключает фактические функции в качестве указателей на функции и, таким образом, фактические функции будут уволены, если вы хотите, чтобы они были ,

так что ваш окончательный код будет выглядеть следующим образом:

$('.linkDetails').on('click', getDetailsFromServer); 

function getDetailsFromServer() { 

    $.ajax({ 
     type: 'GET', 
     url: '/someURL/text.txt', 
     success: postToPage 
    }); 
} 

function postToPage(data) { 

    $('.textDetails').text(data); 
    console.log(data); 
} 
+0

Итак, я загрузил файл на мой localhost и, наконец, работает. Ого, я действительно чувствую себя немного глупо сейчас. Тем не менее, я думаю, что мне приходится много практиковать, пока я действительно не смогу создать собственные веб-страницы. Спасибо за очень быструю помощь всем. –

+0

Не чувствуйте себя глупо, вы учитесь и становитесь лучше. Каждый совершает те же ошибки в какой-то момент. – Liam

+0

Спасибо за приятные слова. Но у меня есть еще один короткий вопрос - есть ли какая-то политика, которая поможет понять эту тему еще лучше? –

0

same origin policy реализованы браузерами предотвращает локальной файловой системы URLs ... если страница и файлы находятся в тех же папках он может работать.

См SOP for file URI для FF

2

, что Arun P Johny сказал правильно! но ваш код имеет еще один probloem

$('.linkDetails').on('click', getDetailsFromServer); 

попробовать выше

+1

Такая же проблема с обратным вызовом ajax;) – Archer

+2

Ваше право, но вам нужно объяснить это более четко – Liam

3

Передайте функцию, а не результат вызова функции:

$('.linkDetails').on('click', getDetailsFromServer); 

Применить же к вашему AJAX успеха обратного вызова:

success: postToPage 

Также необходимо определить функцию getDetailsFromServer(), прежде чем связывать ее с мероприятие. Переместите объявление функции перед вызовом .on('click', ...).

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