Автор Тема: Проблем с Ajax  (Прочетена 7355 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Проблем с Ajax
« -: 19 Юли 2013, 17:44:40 »
Здравейте!
Някой браузъри ми блокират Ajax заявката.В getinfo.php съм сложил header('Access-Control-Allow-Origin: http://www.subal-bg.com/getinfo.php http://www.subal-bg.com');.Тази грешка ми вади Chrome XMLHttpRequest cannot load http://www.subal-bg.com/getinfo.php?action=Add&&id=121. Origin http://subal-bg.com is not allowed by Access-Control-Allow-Origin. Под Windows xp chrome се справя но мозилата блокира заявката.
Ето и cart.js файла който препраща към getinfo.php
   $('document').ready($(function(){   
   $('.toc').click(function(){
    var $id=$(this).attr('id');
   
    $.ajax({
        type: 'GET',
        url: 'http://www.subal-bg.com/getinfo.php?action=Add&&id='+$id,   
        success: function(data) {
             $('.result').html(data);               
        }       
    })       
   });
   $('.toc2').click(function(){
    var $id=$(this).attr('id');
   
    $.ajax({
        type: 'GET',
        url: 'http://www.subal-bg.com/getinfo.php?action=remove&&id='+$id,       
        success: function(data) {
             $('.result').html(data);               
        }
       
    })
    });
    $('.toc3').click(function(){
    var $id=$(this).attr('id');
   
    $.ajax({
        type: 'GET',
        url: 'http://www.subal-bg.com/getinfo.php?action=empty',     
        success: function(data) {
             $('.result').html(data);               
        }       
     })
    });     
   }));


4o4ity

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 4
  • -Получени: 3
  • Публикации: 78
Re: Проблем с Ajax
« Отговор #1 -: 19 Юли 2013, 19:29:25 »
Деба тва PHP.....махни $ пред името на променливата на първо място, т.е. само var id = ....... ,а не $id = $

Опитай да направиш урл-то преди да го пуснеш,демек url = url http:// .......'+ id като декларираш променливата на следващия ред след като си декларирал ид-то

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Re: Проблем с Ajax
« Отговор #2 -: 19 Юли 2013, 20:13:54 »
Става въпрос,че браузарът блокира заявката.Не всеки браузър прави това .

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: Проблем с Ajax
« Отговор #3 -: 19 Юли 2013, 23:07:58 »
Качи го в уеб да видим за кво иде реч, че взех да ставам все по рус четейки този твой пост ;)
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Re: Проблем с Ajax
« Отговор #4 -: 20 Юли 2013, 02:32:24 »
Subal-bg.com/igli.php.  пробвай да добавиш нещо към количката

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: Проблем с Ajax
« Отговор #5 -: 20 Юли 2013, 03:15:09 »
Имаш грешен URL, премахни двойният амперсанд остави само един.
Код: Text
  1. url: 'http://www.subal-bg.com/getinfo.php?action=Add&&id='+$id,
  2.  

Цитат
Web standards

The generic URL (Uniform Resource Locator) syntax allows for a query string to be appended to a file name in a web address so that additional information can be passed to a script; the question mark, or query mark, ?, is used to indicate the start of a query string. A query string is usually made up of a number of different name–value pairs, each separated by the ampersand symbol, &. For example, www.example.com/login.php?username=test&password=blank.
« Последна редакция: 20 Юли 2013, 03:39:29 от jazzman »
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Re: Проблем с Ajax
« Отговор #6 -: 20 Юли 2013, 14:22:36 »
url-a е правилен .... Ето с единични кавички е :
url: 'http://www.subal-bg.com/getinfo.php?action=Add&&id='+$id,         

Значи Chrome(под линукс) ми казва следното
Network:
(изписва го в червено)
getinfo.php?action=Add&&id=150
www.subal-bg.com
GET
(canceled)
Pending


Console:
XMLHttpRequest cannot load http://www.subal-bg.com/getinfo.php?action=Add&&id=150. Origin http://subal-bg.com is not allowed by Access-Control-Allow-Origin.

И тук е интересното щот в getinfo.php съм сложил най-отгоре този хедър който трябва да оправи проблема :
header('Access-Control-Allow-Origin: http://www.subal-bg.com/getinfo.php http://www.subal-bg.com');

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: Проблем с Ajax
« Отговор #7 -: 20 Юли 2013, 15:04:09 »
Влез в cart.js файла и копирай следното на мястото на твоя код.
Код: Javascript
  1. <script type="text/javascript">
  2.  
  3.  
  4.     $('document').ready($(function() {
  5.         $('.toc').click(function() {
  6.             var $id = $(this).attr('id');
  7.  
  8.             $.ajax({
  9.                 type: 'GET',
  10.                 url: 'http://www.subal-bg.com/getinfo.php',
  11.                 data: 'action=Add&id='+$id,
  12.                 cache: false,
  13.                 success: function(data) {
  14.                     $('.result').html(data);
  15.                 }
  16.             })
  17.             return false;
  18.         });
  19.         $('.toc2').click(function() {
  20.             var $id = $(this).attr('id');
  21.  
  22.             $.ajax({
  23.                 type: 'GET',
  24.                 url: 'http://www.subal-bg.com/getinfo.php',
  25.                 data: 'action=remove&id='+$id,
  26.                 cache: false,
  27.                 success: function(data) {
  28.                     $('.result').html(data);
  29.                 }
  30.  
  31.             })
  32.             return false;
  33.         });
  34.         $('.toc3').click(function() {
  35.             var $id = $(this).attr('id');
  36.  
  37.             $.ajax({
  38.                 type: 'GET',
  39.                 url: 'http://www.subal-bg.com/getinfo.php?action=empty',
  40.                 success: function(data) {
  41.                     $('.result').html(data);
  42.                 }
  43.             })
  44.             return false;
  45.         });
  46.     }));
  47.  
  48. </script>
  49.  
  50.  
  51.  

Кода има твърде много повтарящи се неща, не е необходимо след всеки клик да се вика ajax обекта, можеш да обмислиш по-добър дизайн.
« Последна редакция: 20 Юли 2013, 15:08:03 от jazzman »
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: Проблем с Ajax
« Отговор #8 -: 20 Юли 2013, 15:24:01 »
Когато пишеш в .js file трябва да махнеш <script> тага, мислех че знаеш.

Покажи кода от getinfo.php има нещо гнило там.
« Последна редакция: 20 Юли 2013, 15:29:10 от jazzman »
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Re: Проблем с Ajax
« Отговор #9 -: 20 Юли 2013, 15:43:18 »
<?php
session_start
();
header('Access-Control-Allow-Origin: http://www.subal-bg.com/getinfo.php http://www.subal-bg.com');
include 
'config.php';  

             
$action=$_GET['action'];
                
//the product id from the URL
                
switch ($action){
                  case 
"Add";
                   if(isset(
$_GET['id']))
                    {                      
                    
$ID=(int)$_GET['id'];
                    
$_SESSION['cart'][$ID]++;
                    
$quanty =(int)$_SESSION['cart'][$ID];
                    
$count =(int)$_GET['id']++;  
                  
//  setcookie("qunaty[$count]", $quanty);                   
                    
$sucssess=true;                     
                   }                   
                   break;
                  case 
"remove";
                   
//case remove something from cart !
                   
$ID=$_GET['id'];
                   
$count $_GET['id']++;                     
                   
$quanty =  $_SESSION['cart'][$ID]--;                   
                   if(
$_SESSION['cart'][$ID]==(int)0)
                   {
                      
// setcookie("qunaty[$count]", NULL);                       
                       
unset($_SESSION['cart'][$ID]);
                   }
                   else
                   {
                       
//setcookie("qunaty[$count]", $quanty);
                       
$sucssess=true;
                   }         
                   
//end this case !
                   
break;
                 case 
"empty";
                
                        
/* foreach ($_COOKIE['cart'] as $key => $value) {
     
                          setcookie("cart[$key]", "", time()-3600);
                        }
                        foreach ($_COOKIE['qunaty'] as $key => $value) {
     
                           setcookie("qunaty[$key]", "", time()-3600);
                        }*/
                        
unset($_SESSION['cart']);
                        unset(
$_SESSION['qunaty']);
                  
                     
$sucssess==true;    
                     
$empty=true;
                      
                  break;
                   case 
"purchase";
                       
header('Location: purchase.php')  ;
                  break;                  
               }    
               
?>

<table border="1">
<tr>
<th>Продукт  |</th>
<th>Брой     |</th>
<th>Цена     </th>
</tr>
<?php                       
    
if($empty!=true)
    {
            foreach (
$_SESSION['cart'] as $name => $value2)
                      {
                 
$rs run_q('SELECT title,price FROM post WHERE post_id='.$name);
                 
$row fetch_all($rs);                 
                 foreach (
$row as $p)
                 {
                       
                      echo 
'
                  <tr>
                  <td>'
.$p['title'].'</td>';
                  echo 
'<td>';                                     
                        echo 
$value2;                      
                  echo 
'</td>';
                  echo 
'
                  <td>'
.$p['price'].'</td>
                  </tr>'
;       
                } 
                 }
    }
   else 
   {
        echo 
'<p>Количката е празна.</p>';                
   }
?>

</table>

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: Проблем с Ajax
« Отговор #10 -: 20 Юли 2013, 15:53:00 »
Не бях виждал така написан switch.

Я добави следното ( print_r($_GET); exit;) , изпълни запитването и ми дай резултата:

Код: PHP
  1.  
  2. switch ($action){
  3.                   case "Add";
  4.                    if(isset($_GET['id']))
  5.                     {
  6.                     print_r($_GET); exit;
  7.                    ...................................
  8.  

ПП Коментирай също и header() функцията.
« Последна редакция: 20 Юли 2013, 15:55:56 от jazzman »
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Re: Проблем с Ajax
« Отговор #11 -: 20 Юли 2013, 16:01:14 »
Array ( [action] => Add [id] => 121 [_] => 1374325253658 )

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: Проблем с Ajax
« Отговор #12 -: 20 Юли 2013, 16:02:30 »
Кейсовете не се ли пишат с :, а не с ;?
switch ($blah) {
    case "salami":
                  doSmth();
                  break;
}

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: Проблем с Ajax
« Отговор #13 -: 20 Юли 2013, 16:06:35 »
Array ( [action] => Add [id] => 121 [_] => 1374325253658 )

И след като получи този резултат, firebug оцвети ли стринга в червено или беше нормален (черен) ?
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: Проблем с Ajax
« Отговор #14 -: 20 Юли 2013, 16:07:55 »
Кейсовете не се ли пишат с :, а не с ;?
switch ($blah) {
    case "salami":
                  doSmth();
                  break;
}

В php няма ограничения и правила ;)

It's possible to use a semicolon instead of a colon after a case like:

Код: PHP
  1. switch($beer)
  2. {
  3.     case 'tuborg';
  4.     case 'carlsberg';
  5.     case 'heineken';
  6.         echo 'Good choice';
  7.     break;
  8.     default;
  9.         echo 'Please make a new selection...';
  10.     break;
  11. }
  12.  
  13.  
« Последна редакция: 20 Юли 2013, 16:14:03 от jazzman »
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html