2011-05-10 3 views
0

저는 ajax를 처음 사용하기 때문에 모든 textbox를 업데이트 페이지없이 MySQL 데이터베이스에 제출하고 싶습니다.mySQL을 사용하여 모바일 장치에서 Ajax 요청을 만드는 방법

내가 매개 변수로 JS와 텍스트 상자의 값을 캡처 할 경우 잘 작동은 "STR"

function sendAjax(type, str) 
{ 
var xmlhttp; 
if (str=="") 
    { 
    document.getElementById("txtResp").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("txtResp").innerHTML=xmlhttp.responseText; 
    } 
    } 


switch(type) 
{ 
case 'search': 
    xmlhttp.open("GET","mysql_process_search.php?q="+str,true); 
    break; 
case 'add': 
    xmlhttp.open("GET","mysql_process_event.php?q="+str,true); 
    break; 
} 

xmlhttp.send(); 
} 

그리고 페이지 mysql_process_event.php와 ("유형"내가 사용하고 또 다른 매개 변수) 내가 사용 데스크톱 브라우저에 적절한 결과를 얻을 :

echo $_GET['q']; 
$q = $_GET['q']; 

$con = mysql_connect('xxx', 'xxx', 'xxx'); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("xxx", $con); 


$result = mysql_query("SELECT * FROM Events"); 

mysql_query("INSERT INTO Events (Title) 
VALUES ('".$q."')"); 

mysql_close($con); 

을하지만이 모바일 사파리 또는 모바일 안드로이드에서 작동하지 않습니다. xml.responseText 객체의 반향 응답을 캡처하여 페이지에 표시하지만 데이터베이스와 통신하지는 않습니다.

어떤 아이디어?

답변

0

표시되는 오류 메시지는 무엇입니까? PHP 페이지를 직접 호출하면 모바일 장치에서도 최종 결과를 볼 수 있어야합니다.

두 번째로 작성한 코드는 본질적으로 위험하고 SQL Injection에 광범위하게 열려 있습니다. 즉, 데이터베이스를 해킹하고 모든 것을 선택하거나 테이블을 삭제하는 등의 작업을 수행하는 것이 간단합니다. . 당신은 바인드 변수를 사용하고 싶습니다. 최소한 문자열을 이스케이프하고 싶습니다.

+0

예 모바일 브라우저에서 문제를 찾을 수 있도록 PHP 코드를 단순화하고 싶습니다. 문제는 없다는 것입니다. 데이터베이스에서 정보를 보내거나 표시하지 않습니다. 데스크톱 브라우저에서 잘 작동합니다. – TaylorMac

+0

@TaylorMac 좋습니다. 나를 걱정했다. 다음 생각 : 오류보고 (error_reporting (E_NOTICE);)를 시작하고 당신이 얻는 것을보십시오. 전혀 오류가 있으면 표시해야합니다. 둘째, 왜 InnerHTML을 사용하고 있는지 궁금합니다. 나는 document.getElementById ("..."). value = response를 제안 할 것이다. 셋째, 어떤 데스크톱 브라우저에서 사용해 보았습니까? 넷째, 공개 웹 호스트에 있습니까? 원한다면, 내 iDevice에서 시도해 볼 수 있고 다른 것이 발생하는지 확인할 수 있습니다. –

+0

고마워요. 더 많은 오류보고를 허용하고 문제점을 발견했습니다. 내 HTML 개체 중 하나에 onclick = ""이 없기 때문에 모바일 사파리에서는 작동하지 않습니다. 요청이 전송되지 않았습니다. 예. innerHTML을 .value로 변경해야합니다. – TaylorMac

관련 문제