2012-03-08 14 views
1
function ajaxFunction(id){ 
    var ajaxRequest; 
    var response; 
     try{ 
     // Opera 8.0+, Firefox, Safari 
     ajaxRequest = new XMLHttpRequest(); 
     } catch (e){ 
     // Internet Explorer Browsers 
     try{ 
     ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
     try{ 
     ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch (e){ 
     alert("Ajax Failed"); 
     return false; 
    } 
    } 
} 
ajaxRequest.onreadystatechange = function(){ 
    if(ajaxRequest.readyState == 4){ 
    response = ajaxRequest.responseText; 
    } 
} 
ajaxRequest.open("GET", "http://priest/getpic.php?id="+id, true); 
ajaxRequest.send(null); 
return response; 

} 

function lightbox(id) { 
var image; 
var imageArr; 
document.write(image); 

image = ajaxFunction(id); 
imageArr = image.split('|'); 

imageSrc = imageArr[0]; 
imageWidth = imageArr[1]; 
imageHeight = imageArr[2]; 

getElementById('lightbox').visibility=visible; 
getElementById('lightboximg').src=imageSrc; 

if(imageWidth > 700) {getElementById('lightboximg').width=700;} 
if(imageHeight > 500) {getElemetnById('lightboximg').height=500;} 


} 

私の問題は、私のコードがajaxFunction()を画像変数に呼び出し、ajaxFunction()が変数に何も返さず、次のエラー。JavaScriptは私のajax関数から値を返します

キャッチされない例外TypeError:任意のヘルプをいただければ幸いです

未定義 ライトボックス (匿名関数)の方法「分割」を呼び出すことはできません。

+0

これは...限り、それが求められますどのくらいの頻度に関しては、「正規表現でHTMLを解析する」と同等のことをhttp://stackoverflow.com/questions/9286045/get-json-response-varのデュープを得ていますjquery-outside-jquery-function、http://stackoverflow.com/questions/562412/return-value-from-function-with-an-ajax-callなど、多くの機能があります。 –

答えて

1

AJAXはAsynchronous JavaScript and XMLの略です。ここの重要な部分は実際には非同期部分です。それは何を意味することは、情報のために、サーバに要求を送信する際、ブラウザが表示し、既存のページの動作に干渉することなく、バックグラウンドの情報を取り出すことです。このため、AJAXの場合、コールバックは膨大です。サーバが500msか3秒かかって値を返すかどうかわからないので、本当にできることはリクエストを送信し、完了、私はあなたにしてほしいこの "。あなたの現在のコードでは、あなたのサーバは、関数に値を返そうとする前に、getpic.phpが返す時間はほとんどありません。あなただけのajaxFunctionは、コードの一部onreadystatechange内で実行される関数コールバックで二番目の引数を受け入れることができるようにコードを変更する必要があります。

+0

お時間を頂きましてありがとうございます。今説明していただいておりますが、これは完全に理解しており、これを実現していないために私は自分自身を蹴っています。笑 –

関連する問題