2014-11-28 2 views
0

Эй, ребята, у меня возникла проблема с вызовом функции ajax. Я пытаюсь добраться до страницы «delete.php», но он никогда не вызывается. Вот мой код сценария:Функция Ajax не называется

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 
     <script> 
      function deleteSpark(sparkID) { 

        var answer = confirm(sparkID); 
        //Send the user to the correct page when he presses 'yes/oke' 
        if(answer==0){ 
         var ajax= $.ajax({ type: "post", 
          data: {sparkid: sparkID }, 
          url: 'delete.php' 
         }); 
         ajax.done(function(){ 
          window.location.href = "/sparks.html"; 
         }); 

         ajax.fail(function(){ 
          window.location.href = "/index.html"; 
         }) 
        } 
        /* OR*/ 



        /* this method after all other code in handler*/ 
       // window.location.href = "/delete.php?sparkid=" + sparkID; 
       // window.location.href = "/sparks.html"; 
       //Returns false so no events will be executed. 
       return false; 

      } 

Я называю это то с помощью кнопки: Удалить 8

И в моем PHP файл "delete.php" я это сделать: $ sparkID = $ _POST [ 'sparkid' ];

но он никогда не вызывается, потому что я пытаюсь эхо и делать другие вещи, которые не сработают. Может кто-нибудь мне помочь?

+0

'confirm' метод возвращает логическое значение. do 'if (answer == false)', а затем выполнить. – JonnieJS

ответ

1

У меня недостаточно отзывов о комментировать. Можете ли вы проверить элемент (Firefox/Chrome), а затем просмотреть вкладку «Сеть» во время работы AJAX? Это должно показывать отправленные данные, какую страницу она отправляется и т. Д. И должна помочь вам отлаживать.

Возможно, вы захотите также попробовать использовать абсолютный URL-адрес, чтобы убедиться, что он попадает на нужную страницу.

Спасибо,

Эндрю

1

Я полагаю, если возвращение ложное не для предотвращения этого события, что вы хотите возвращение ложным, когда подтверждение не «да». Поэтому я переместил значение false в оператор else.

Теперь, как указано @Sergey Yarotskiy, ваш if statetement - настоящая проблема, потому что вы ждете 0; вы можете комбинировать (если вам нужен ответ переменной где-то в другом месте): if(answer = confirm(sparkID)){ или если он не нужен: if(confirm(sparkID)){.

Надеюсь, это вам поможет.

Это должно исправить:

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 
     <script> 
      function deleteSpark(sparkID) { 
        //Send the user to the correct page when he presses 'yes/oke' 
        if(answer = confirm(sparkID)){ 
         var ajax= $.ajax({ type: "post", 
          data: {sparkid: sparkID }, 
          url: 'delete.php' 
         }); 
         ajax.done(function(){ 
          window.location.href = "/sparks.html"; 
         }); 

         ajax.fail(function(){ 
          window.location.href = "/index.html"; 
         }) 
        }else{ 
        return false; 
        } 

      } 
+0

Почему нисходящий поток без какой-либо точки? –

+0

Прошу прощения, потому что ответ абсолютно неверен. Возврат false просто предотвращает действие по умолчанию. Это не остановит слушателей событий AJAX от прослушивания ответа. Когда ответ будет получен (или ошибка), вызов будет вызван в любом случае. Поэтому проблема заключается в том, что ajax не называется вообще, а не в операторе return. –

+0

@SergeyYarotskiy return false предотвратить по умолчанию да это правда, но fonction не имеет события по умолчанию. Поскольку есть подтверждение, я предположил, что OP хочет вернуть false, если подтверждение не было принято, потому что, если оно будет принято, страница изменится. Плюс вы заметили шанс в статусе 'if'? –

0

'Confirm' возвращает истину или ложь, а не 0, поэтому изменить условие

if (answer) { 
    // do staff 
} 
+0

URL-адрес был одобрен, ваш URL-адрес просто заставляет http, URL @Stef Van Gils не ... – tkausl

+0

Просто открыл свой URL-адрес в браузере (просто //), и он вернул мне «файл не найден» с перенаправлением в файл: // // .... Может ли это быть браузером или сервером? Я использую firefox на ubuntu. В любом случае, если вы хотите пуленепробиваемый код, почему бы вообще не избегать таких вопросов? –

+1

Этот URL-адрес не будет работать, если вы перейдете непосредственно к нему, но он используется в HTML для изображений, CSS или JS, он автоматически сохранит протокол (HTTP или HTTPS). Это рекомендуется, так как браузеры не любят перекрестные нагрузки (HTML через HTTP, включая JS через HTTPS или наоборот). – tkausl

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