2016-07-07 6 views
0

4 недели назад Я написал сценарий php, который добавляет продукты в корзину. Поскольку я новичок в javascript, я решил сделать это лучше, загружая страницы с помощью ajax.Доступ к другому файлу с помощью ajax

Моя работа выглядит следующим образом:

<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 
 

 
<a href="#" class="cart-box" id="cart-info" title="View Cart"> 
 
    <?php 
 
    if(isset($_SESSION["products"])){ 
 
     echo count($_SESSION["products"]); 
 
    }else{ 
 
     echo 0; 
 
    } 
 
    ?> 
 
</a> 
 

 
<form class="form-item"> 
 
    <div class="cart"> 
 
     <input type="submit" value="Add to Cart" class="button" /> 
 
    </div> 
 
</form> 
 

 

 
<script> 
 
    $(document).ready(function(){ 
 

 
     $(".form-item").submit(function(e){ 
 
      var form_data = $(this).serialize(); 
 
      $("input[type=submit]").val('Adding...'); //Loading button text 
 

 
      $.ajax({ //make ajax request to cart_process.php 
 
       url: "test2.php", 
 
       type: "POST", 
 
       dataType:"json", //expect json value from server 
 
       data: form_data 
 
      }).done(function(data){ //on Ajax success 
 
       $("#cart-info").html(data.items); //total items in cart-info element 
 
       $("input[type=submit]").val('Add to Cart'); //reset button text to original text 
 
       alert("Item added to Cart!"); //alert user 
 
      }) 
 
      e.preventDefault(); 
 
     }); 
 
    }); 
 
</script>

Похоже, что код перестает работать, когда я начинаю making the ajax request to test2.php, потому что я не могу получить доступ к файлу test2.php, и я не знаю, где ошибка исходит.

Спасибо за помощь

+0

где находится test2.php в вашем пути относительно файла с другим кодом? – Abaddon666

+0

Какая ошибка? – FuriousD

+0

@ Abaddon666 'test2.php' и файл сценария находятся в одной папке – Prince

ответ

0

Да, отладка AJAX может быть беспокоить. , , если вы не найдете способ «увидеть», что там происходит.

Две идеи:

(1) В PHP файл, создать новый файл, писать записи в файл, закрыть файл журнала при сделано. Вы можете запустить процедуру и проверить созданный файл.

$fq=fopen('_myeyes.log','a'); 
fwrite($fq, '***** Created by uploader.php *****' . "\r\n"); 
fwrite($fq, '$fname: ' .$fname . "\r\n"); 
fwrite($fq, '$pathToImages: ' .$pathToImages. "\r\n"); 
fwrite($fq, '$pathToThumbs: ' .$pathToThumbs. "\r\n"); 
fwrite($fq, '$thumbWidth: ' .$thumbWidth. "\r\n"); 
fclose($fq); 

Это работает, но есть лучший способ.

(2) Установите расширение Firefox (есть также один для Chrome, но и далее один является более надежным, - так что если вы наркоман Chrome, как я затем использовать как:

firePHP

FirePHP for Chrome

Получить FFox один работает первым, потому что иногда Chrome один Glitchy. - это хорошо, когда вы знаете, что это работает, но пугает, когда вы просто пытаетесь его Вы думаете, что ваш код проблематичен, но это расширение ...


A Guide To Using FirePHP

Debugging PHP Code With FirePHP


В основном, после загрузки FirePHP:

(1) Загрузить эти файлы в папку с именем public_html\FirePHPCore(где public_html ваш Webroot, как это принято на большинстве веб-хостинга)

fb.php 
fb.php4 
FirePHP.class.php 
FirePHP.class.php4 

(2) В верхней части PHP файла, такие строки:

<?php 
if (file_exists('../FirePHPCore/fb.php')) { 
    require_once('../FirePHPCore/fb.php'); 
}else{ 
    if (file_exists('FirePHPCore/fb.php')) { 
     require_once('FirePHPCore/fb.php'); 
    }else{ 
     $fpLog = fopen('__fph_log.log', 'w'); 
     fwrite($fpLog, '***** FirePHP did not load - FirePHPCore/fb.php NOT FOUND *****' . "\n\r"); 
    } 
} 
ob_start(); 
$console = FirePHP::getInstance(true); 
$console->registerErrorHandler(); 
$console->registerExceptionHandler(); 

Затем внутри любой функции, в которой вы хотите использовать FirePHP:

function somefunction(){ 
    global $console; 
    //a bunch of PHP goes here 
    $console->log('role: '.$fr); 
    //a bunch of PHP goes here 
} 

В Chrome/Firefox DevTools (F12), вы увидите, что эти сообщения отображаются на вкладке «Консоль», так же, как если бы вы выпустили console.log("Hello there") в javascript.

У вас есть глаза!

0

Ajax request php script должен находиться на одной стороне сервера, я думаю, ваш запрос ajax был междоменным, попробуйте изменить ваш url как «localhost/test2.php».

jQuery AJAX cross domain