2009-08-19 5 views
0

jQuery를 사용하여 데이터베이스를 쿼리하고 입찰 테이블을 업데이트하고 통화 거래 시세를 묻습니다. 나는 $ .ajax를 사용하여 데이터베이스를 쿼리하고 자바 스크립트가 테이블을 업데이트하기 위해 파싱하는 XML 문서를 반환하는 php 스크립트에 통화 심볼을 보낸다. 모든 것이 파이어 폭스에서 pc/mac와 Safari 모두에서 작동하지만 IE에서는 작동하지 않습니다. 관련 코드 ... 아약스 호출을

JQuery와 :

var updateDataFunction = function() { 
    $.ajax({ 
     url: "func2.php", 
     type: "GET", 
     data: "symbol=<?php echo $stock; ?>", 
     dataType: "xml", 
     success: function (msg) { 
      var bid = $('bid',msg).text(); 
      var ask = $('ask',msg).text(); 
      var spread = $('spread',msg).text(); 

      // do some other stuff 
     } 
}); 
}; 

스크립트는 자바 스크립트를 실행하기 전에 자바 스크립트에서 주식을 배치하는 PHP를 사용합니다. updateDataFunction은 $ (document) .ready에서 호출됩니다.

GET 대신 POST를 사용하여 PHP 스크립트

<?php 
header("content-type:text/xml;charset=utf-8"); 

// connect to the database 

function GetUpdate($symbol) { 

$query = "SELECT * FROM tblSG WHERE strSymbol='$symbol'"; 
$result = mysql_query($query); 

while($row = mysql_fetch_array($result)) { 
    $spread= $row['fBid'] - $row['fAsk']; 
    $output="<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<exchange>\n"; 
    $output.="<bid>" . number_format($row['fBid'],4) . "</bid>\n"; 
    $output.="<ask>" . number_format($row['fAsk'],4) . "</ask>\n"; 
    $output.="<spread>" . number_format($spread,4) . "</spread>\n"; 
    $output.="</exchange>"; 
} 

return $output; 

} 


$symbol = $_GET['symbol']; 

echo GetUpdate($symbol); 

?> 

는 그것뿐만 아니라 FF 및 사파리에 실패합니다. 이것에 대한 해결책은 무엇입니까?

+0

POST로 변경하면 PHP 코드가 $ _POST로 변경됩니다. $ _REQUEST를 사용하면 서버 측에서 게시물인지 get인지 알 필요가 없습니다. 오류가 발생하는 한 JS 오류가 발생합니까? – Brian

+0

Fiddler (http://www.fiddler2.com/)를 사용하고 있습니까? 서버의 응답은 무엇입니까? –

+0

$ .ajax 호출에이 매개 변수를 추가하십시오. 오류 : function (r, e) {alert (e); } 오류가 있었는지 알려줍니다. 내 생각 엔 IE는 '파서 오류'라는 팝업을 반환하고 다른 브라우저는 계속 정상적으로 작동 할 것입니다. –

답변

2

필자가 제안한 피들러 앱을 사용하여 서버가 응답 한 것을 확인했지만, FireFox에서 서버가 2 초마다 작동하는 동안 한 번만 서버에 도달했습니다. 짧은 업데이트 간격 때문에 나는 IE에서 업데이트를 발견하지 못했습니다. 추가 조사를 통해 IE는 모든 GET 요청을 캐시하고 나중에 동일한 요청이 이루어지면 이전 요청을 다시 처리합니다. 이를 방지하려면 결과를 캐시하지 않으려면 헤더 정보를 브라우저에 보내야합니다. 내용 유형 선언 아래의 PHP 스크립트에 다음 코드를 추가하면 문제가 해결되었습니다.

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
관련 문제