2013-07-17 3 views
0

해결할 수없는 문제가 있습니다. 부분적으로는 적절한 용어로 설명 할 수 없기 때문입니다. 나는이 서투른 질문에 대해 미안하다.ajax 함수에서 PHP 파일을 호출하는 방법?

아래에서 내 목표의 개요를 볼 수 있습니다. 동적 인 드롭 다운 목록에있는 모든 카테고리 ID를 얻으려고했는데, 두 번째 드롭 다운 목록은이 코드의 첫 번째 드롭 다운 목록 선택에 기반합니다. 일부 코드는 로컬에서 잘 작동합니다. 하지만 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 % 확신 할 수 없습니다. ajax_city.php에서 PHP 코드를 html로 바꾸어서 문제를 격리 할 수 ​​있습니다.

설정에 따라 크로스 domian 액세스를 허용해야 할 수도 있습니다. 이 코드를 ajax_city.php 페이지에 추가하십시오. 관련이없는 노트에

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

, 당신은 당신의 ajax_city.php 파일을 작성한 방법 당신은 SQL 주입에 자신이 취약 남아있다. sql에서 "$ id"값이 정수라고 가정하면 단순히 SQL 주입을 방지하기 위해 typecasting을 강제 할 수 있습니다.

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

변경 :

$id=$_POST['id']; 

다음과

$ 자료 = INTVAL ($ _ POST [ 'ID']);

희망이 도움이됩니다.

+0

답장을 보내 주셔서 감사합니다. 나는 이름이있는 테이블을 가지고 있습니다 : catalog_category_entity 그리고 3 개의 열 (entity_id, parent_id, level)을 가지고 있습니다. – Jhon

+0

예 ... 제가이 magento를 사용하여 작업을 잘 해봤습니다. 이제 그 코드를 복사했습니다. 내부 magento 여기 왜 작동하지? – Jhon

+0

아직도 나는 어느 것이 나를 도울 수있는 동일한 문제점을 가지고있다 – Jhon

0

아약스 파일의 경로가 올바른지, magento에 기본 .htaccess가있는 것으로 확인하십시오. Firebox에서 firebug를 사용하거나 기본 디버거를 사용하여 브라우저에서 보낸 NET 요청을 확인하여 호출중인 ajax 파일이 실제로 호출되는지 확인하십시오. 외부의 자홍색 및 파일 경로가 정확하고 데이터가 나타나지 않으면 mage :: catalog_category 모델을 사용하여 magento로 간단한 모듈을 만들어보십시오. 나는 그것이 도울지도 모른다는 것을 희망한다. :)

+0

네 오른쪽 @Sarthak Sawhney 내 문제는 아약스 파일은 브라우저에 요청을 보내지 않습니다 ... 내가 지금이 시도했지만 지금은 사용하려고 도움이 필요합니다 – Jhon

+0

어떻게하면 메이지 :: catalog_category 모델을 만들 수 있습니까? – Jhon

+0

안녕하세요, Mage :: getModel ('catalog/category') -> load (X); 카탈로그 모델을 사용하여 원하는 범주를로드 한 다음 addfieldtofilter를 사용하여 필터를 적용하십시오. 이 파일을 app/frontend /../ catalog/category/폴더에 만듭니다 (by : 내 테마 디렉토리에 대한 경로입니다). http://www.silksoftware.com/magento-module-creator/ 모듈을 빠르게 만들려면 위의 링크를 사용하십시오. 이제 프론트 엔드 파일에 코드를 넣으면 예상 한 데이터를 반환하는 url이 생깁니다. 원하는 페이지에서 ajax를 호출하기 위해이 url을 사용하기 만하면됩니다. 루트에있는 .htaccess를 편집하여 존재하는 파일에 대한 액세스를 허용 할 수 있습니다. –

관련 문제