2014-09-13 2 views
1

내 Js 파일이 아약스에서 작성한 PHP 변수를 인식하지 못하는 문제가 있습니다.자바 스크립트 (아약스)와 PHP가 함께 작동하나요?

의 index.php :

<script src="js.js"> 
</script> 
<? 
include('build.php'); 
<div id="brand"> 
<? 
    echo $brandinput; 
?> 
</div> 
//....more code 
?> 

build.php :

<script type="text/javascript"> 

    $(document).ready(function(){ 
    $.ajax({ 
     crossOrigin: true, 
     dataType: "jsonp", 
     type: "GET", 
     url: "getBrand.php", 
     data: info, 
     success: function(data){ 
      $("#result").html(data); 
     } 

    }); 
    </script> 
    <?php $brandinput='<div id="result"></div>'; 
     ?> 

js.js : 여기 은 예입니다 그래서

$(document).ready(function(){ 
//dosomething with div's in index.php 
} 

, 내가하려고합니다 이것을 가장 쉬운 방법으로 설명하십시오. 내 index.php에는 build.php가 포함되어 있으며, 다른 서버에서 데이터를 검색하기 위해 ajax를 호출 할 수 있습니다. 이 데이터는 많은 PHP 변수 ($brandinput)에 포함되어 있습니다. <div>,<input>,... etc. index.php echo $ brandinput : 변수의 모든 내용을 표시합니다. 하지만 div, 입력, 등의 모양을 변경하는 js.js 있습니다 및 변수 $ brandinput의 내용을 인식하지 못하는이 js입니다.

난 당신이 내가 잘못하고있는 중이 야 더 많은 아이디어 또는 무엇을 가지고 있는지 알고 싶습니다는 ... 모든 코드가 잘 작동, 나는 (내가 전에 말한 제외) 여러 번 Ajax 호출을 테스트 잘 작동하고 Index.php는 $braninput을 올바르게 표시합니다.

p.s. $brandinput은 다음과 같습니다.

<div id='BlackBerry'><img src='..\/images\/supporteddevices\/blackberry-logo.jpg' alt='blackberry-logo' width='75'><br><input class='adjustRadio' type='radio' 

그래, 잘 작동합니다.

+0

1. 동일한 도메인 요청에 JSONP을 사용하는 이유는 무엇입니까? 2.'$ brandinput'은 build.php에 설정 한 것입니다. 3. HTML에 textfield라는 태그는 없습니다. 당신은 아마도 textarea를 의미했을 것입니다. –

+0

1. 나는 다른 서버에서 데이터를 검색하므로, 동일한 domain.2가 아닙니다. 그렇습니다. 3. 죄송합니다. 마지막 순간에 변경했습니다. 지금 편집했습니다. –

답변

0

사실이는 아약스 요청이

// in build.php 
$(document).ready(function() { 
    var promise = $.ajax({ 
     crossOrigin: true, 
     dataType: "jsonp", 
     type: "GET", 
     url: "getBrand.php", 
     data: info, 
     success: function (data) { 
      $("#result").html(data); 

      //dosomething with div's in index.php 
     } 
    }); 
}); 

또는이 방법을 시도 js.js

의 기능을 실행하기 전에 먼저 끝날 때까지 당신이해야 할 것은 기다리는 것입니다, 작동하는데 어떻게

// in build.php 
$(document).ready(function() { 
    var promise = $.ajax({ 
     crossOrigin: true, 
     dataType: "jsonp", 
     type: "GET", 
     url: "getBrand.php", 
     data: info, 
     success: function (data) { 
      $("#result").html(data); 
     } 
    }); 
}); 

// in js.js 
$(document).ready(function() { 
    promise.then(function (data) { 
     //dosomething with div's in index.php 
    }); 
}); 
,691 (js.js 가정하면 후 build.php 내의 스크립트 로드되거나 js.js은 이후로드되어야한다)

$brandinput

P.S는 할당 어떤 문자열을 보유하고 아약스 성공 핸들러는 단지 클라이언트 측에서 직접 렌더링 DOM을 조작 아약스 요청으로 변경되지 않습니다.

+0

그냥 그랬지만 작동하지 않았다. 이제 js.js가'$ brandInput'의 내용을 읽지 않는다고 생각합니다. 하지만 내 HTML은'echo $ brandInput'을 사용할 때 화면에 원하는 것을 정확히 보여주기 때문에 읽었습니다. 나는 몇 가지 해답을 찾고있을 것이다. –

0

이 같이 당신의 PHP 코드 이후에 <script> 태그를 이동 시도 할 수 있습니다 : 약간 다른 노트에

<? include('build.php'); ?> 
<div id="brand"> 
    <? echo $brandinput; ?> 
</div> 
<script src="js.js"></script> 

//....more code 

, 당신은/내장 않도록 고려 HTML과 자바 스크립트와 PHP 코드를 혼용해야한다. 더 나은 방법으로 "PHP에서 Javascript로 데이터 전달"방법을 보려면 post을보십시오.

관련 문제