2013-08-13 2 views
0

이 질문에 대한 답을 많이 찾았지만 내 머리를 감쌀 수 없습니다.콜백을 통해 ajax 값을 반환하십시오.

콜백을 통해 아약스 값을 반환하고 싶습니다. 아래

아래 나는이 작업을 수행 할 수있는 몇 가지 방법보다가 확신 자바 스크립트

alert(imageExist(mycallback)); //I want this to echo either 1 or 0 

function mycallback(data) { 
    return data; 
} 

function imageExist(callback) { 

    $.ajax({ 
     url:'../php/imageExist.php', 
     success:callback 
    }); 

} 

이다 아약스

<?php 
session_start(); 

$filename = '../tempUploads/i'.$_SESSION['user'].'.'.$_SESSION['imageExt']; 

if (file_exists($filename)) { 
    echo 1; 
} 
else { 
    echo 0; 
} 

?> 

액세스는 PHP입니다. Ajax는 비동기식이며 값을 반환 할 수 없다는 것을 알고 있습니다. 나는 그것을 동기시키고 싶지 않다. 나는 또한 promise/defer (.done 등)를 사용하고 싶지 않습니다. 나는이 방법으로 그것을하는 방법을 이해하고 싶다, 그 후에 나는 다른 방법을 시도 할 것이다.

감사합니다.

+1

중복 가능성 [? AJAX와의 응답 전화를 반환하는 방법 (HTTP : //stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) –

+0

* "아약스가 비동기이며 값을 반환 할 수 없다는 것을 알고 있습니다."* 그렇다면 왜 너는 묻고 있니? * "나는 그것을 동기시키고 싶지 않다."* 좋다! * "나는 또한 약속을 지키고 싶지 않다. (.done 등) * 우 :(*"나는 이렇게하는 법을 알고 싶다. "* 할 수 없다. 다른 방법을 시도해 보자. " –

답변

0

약간의 실수를하였습니다. 당신이 데이터를 경고합니다

당신은 콜백 함수에서이 작업을 수행해야한다 : imageExist는 아무것도 돌려주지 않는 다음 아약스 통화를 시작하고 있기 때문에

imageExist(mycallback); //I want this to echo either 1 or 0 

function mycallback(data) { 
    alert(data); 
    //return data; 
} 

function imageExist(callback) { 

    $.ajax({ 
     url:'../php/imageExist.php', 
     success:callback 
    }); 
} 

이입니다.

+0

"data "를 반환하므로 imageExist (mycallback) == 데이터가됩니다. – JamesGP

+0

동기식 아약스 호출을 수행하는 경우에만 작동합니다. –

0

콜백을 수행하는 ajax 메서드에 콜백을 전달하기 때문에 콜백 내부에서 수행중인 반환이 작동하지 않습니다. 콜백을 실행하는 경고 호출이 아니므로 반환을받지 못합니다.

0

맞습니다. 비동기 아약스는 항상 두 개의 조각으로 코드를 분할 :

  1. 요청
  2. 일부 지연 ... 응답 후
관련 문제