2013-07-17 2 views
0

У меня есть эта проблема, которую я не могу решить. Отчасти потому, что я не могу объяснить это правильными условиями. Я новичок в этом, так жаль этот неуклюжий вопрос.как вызвать php-файл в функции ajax?

Ниже вы можете ознакомиться с обзором моей цели. Я попытался получить все идентификаторы категории в динамическом раскрывающемся списке, второй раскрывающийся список основан на первом раскрывающемся списке списка, для этого я нахожу код, который отлично работает в локальном но я попробовал внутри magento его не работает Почему?

Вот мой код

<tr> 
       <td class="tdpadfirst"> 
       <label for="category" class="rightgap"><?php echo Mage::helper('marketplacepartner')->__('Product Category') ?>:</label> 
       <span class="required starimp">&nbsp;&nbsp;&nbsp;&nbsp;</span> 
        </td> 

       <td class="tdpadfirst"> 
       <select id="category" class="myinput-text required-entry widthinput" name="category" onChange="updateCategory(this.value)"> 
       <option value="">--Select Categories--</option> 
       <?php 
       include('db.php'); 
       $sql=mysql_query("select entity_id from catalog_category_entity where level='2';"); 
       while($row=mysql_fetch_array($sql)) { 
       $id=$row['entity_id']; 
       $data=$row['parent_id'];?> 
       <!--echo '<option value="'.$entity_id.'">'.$parent_id.'</option>';--> 
       <option value="<?php echo $id ?>"><?php echo $id ?></option> 
       <?php } ?> 
       </select> 
       <select name="city" class="city"> 
       <option selected="selected">--Select subcategory--</option> 
       </select></td></tr> 

<script type="text/javascript" src="http://ajax.googleapis.com/ 
ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script type="text/javascript"> 
$(document).ready(function() { 
    $(".country").change(function() { 
    var id=$(this).val(); 
    var dataString = 'id='+ id; 
    $.ajax ({ 
    type: "POST", 
    url: "ajax_city.php", 
    data: dataString, 
    cache: false, 
    success: function(html) { 
     $(".city").html(html); 
    } 
    }); 
}); 
}); 

ajax_city.php является:

<?php 
include('db.php'); 
if($_POST['id']) { 
    $id=$_POST['id']; 
    $sql=mysql_query("select entity_id from catalog_category_entity where parent_id='$id'"); 
    while($row=mysql_fetch_array($sql)) { 
     $id=$row['entity_id']; 
     $data=$row['parent_id']; 
     echo '<option value="'.$data.'">'.$id.'</option>'; 
    } 
} 

>

И db.php является:

<?php 
$mysql_hostname = "localhost"; 
$mysql_user = "root"; 
$mysql_password = "admin"; 
$mysql_database = "magento16"; 
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) 
or die("Opps some thing went wrong"); 
mysql_select_db($mysql_database, $bd) or die("Opps some thing went wrong"); 

?>

+0

любой здесь? – Jhon

+0

Просто проверьте правильность пути. Какую ошибку вы получаете? – Pramod

ответ

0

Может ли указать, что вы имеете в виду под «своим рабочим штрафом на местном уровне, но я пытался внутри magento не работать?»

Я не уверен на 100%, если вы сделали это на основе вашего вопроса. Попробуйте заменить php-код в ajax_city.php только html, который может быть выделен.

Возможно, вам потребуется разрешить доступ через кросс-доминанту в зависимости от вашей установки. Попробуйте добавить этот код на страницу ajax_city.php.

header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: GET, POST'); 

На несвязанной ноте, как вы написали свой файл ajax_city.php вы оставили себя уязвимыми для SQL инъекций. Предполагая, что ваше значение $ id в вашем sql должно быть целым числом, вы можете просто заставить typecasting предотвращать SQL-инъекцию.

...entity_id from catalog_category_entity where parent_id='$id'"); 

Изменение:

$id=$_POST['id']; 

To:

$ ID = intval ($ _ POST [ 'ID']);

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

+0

Спасибо за ваш ответ .. У меня есть таблица с именем: catalog_category_entity И в том, что у меня есть три столбца (entity_id, parent_id, level) – Jhon

+0

да .. я попробовал это из-за бонуса magento его работы отлично И теперь я просто скопировал этот код внутри magento здесь его не работает почему? – Jhon

+0

все еще у меня такая же проблема, как мне может помочь – Jhon

0

Вы уверены, что путь к файлу ajax верен, так как я вижу magento, есть база .htaccess. Проверьте, действительно ли вызываемый вами файл ajax вызывается проверкой запросов NET, отправленных в вашем браузере, возможно, используя firebug в firefox или chromes default debugger. Если его рабочий штраф за пределами magento и путь к файлу все еще верны, и данные не отображаются, попробуйте создать простой модуль в magento, используя mage :: catalog_category Model. Я надеюсь, что это может помочь .. :)

+0

да, ваше право @Sarthak Sawhney моя проблема в том, что файл ajax не отправляет запросы в браузер ... мне нужна помощь об этом до сих пор, я пробовал для этого, но не использовал – Jhon

+0

Как я могу создать модель мага :: catalog_category? – Jhon

+0

Hi, Mage :: getModel ('catalog/category') -> load (X); Используйте модель каталогов для загрузки категории, которую вы хотите использовать, затем используйте addfieldtofilter для применения фильтров. сделать этот файл в приложении/frontend /../ каталоге/категории/папке (по .. я имею в виду путь к вашему каталогу тем.) http://www.silksoftware.com/magento-module-creator/ Используйте эту ссылку выше, чтобы создать себе модуль быстрее. Теперь поместите код в свой файл frontend, и у вас будет URL-адрес, чтобы вернуть вам данные, которые вы ожидаете. Просто используйте этот url для вызова ajax со страницы, которую вы хотите. OR Вы можете редактировать .htaccess в корневом каталоге, чтобы разрешить доступ к существующим файлам. –

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