code

jQuery $.ajax(), 성공 데이터를 별도의 함수로 전달

starcafe 2023. 9. 5. 20:41
반응형

jQuery $.ajax(), 성공 데이터를 별도의 함수로 전달

저는 jQuery $.ajax() 함수를 사용하고 있습니다.나는 이것을 부모 함수에 넣었고, 이것은 일부 값을 아약스 함수에 전달합니다.제가 하고 싶은 것은 사용자 정의 콜백 함수를 사용하여 Ajax 성공 함수에서 데이터 매개 변수를 전달하는 것입니다.

다음은 제가 효과가 있을 것이라고 생각했던 것입니다. 하지만 그렇지 않습니다.

testFunc = function(str, callback) {
    // Send our params
    var data = 'some data to send';
    $.ajax({
        type: 'POST',
        url: 'http://www.myurl.com',
        data: data,
        success: callback
    });
}

그런 다음 해당 함수를 호출하고 사용자 정의 함수를 전달하여 해당 함수 내부의 성공 함수 데이터를 사용할 수 있게 하고 싶습니다.

testFunc('my string data', function(data){
    alert(data);
});

저는 이것이 다음과 같길 원합니다.

testFunc = function(str, callback) {
    // Send our params
    var data = 'some data to send';
    $.ajax({
        type: 'POST',
        url: 'http://www.myurl.com',
        data: data,
        success: function(data) {
            alert(data);
        }
    });
}

잘 작동합니다.

<script src="/jquery.js"></script>
<script>
var callback = function(data, textStatus, xhr)
{
    alert(data + "\t" + textStatus);
}

var test = function(str, cb) {
    var data = 'Input values';
    $.ajax({
        type: 'post',
        url: 'http://www.mydomain.com/ajaxscript',
        data: data,
        success: cb
    });
}
test('Hello, world', callback);
</script>

이 키워드를 사용하여 $.ajax() 함수에 전달된 사용자 지정 데이터에 액세스할 수 있습니다.

    $.ajax({
        // ... // --> put ajax configuration parameters here
        yourCustomData: {param1: 'any value', time: '1h24'},  // put your custom key/value pair here
        success: successHandler
    });

    function successHandler(data, textStatus, jqXHR) {
        alert(this.yourCustomData.param1);  // shows "any value"
        console.log(this.yourCustomData.time);
    }

이게 내가 하는 방식입니다.

function run_ajax(obj) {
    $.ajax({
        type:"POST",
        url: prefix,
        data: obj.pdata,
        dataType: 'json',
        error: function(data) {
            //do error stuff
        },
        success: function(data) {

            if(obj.func){
                obj.func(data); 
            }

        }
    });
}

alert_func(data){
    //do what you want with data
}

var obj= {};
obj.pdata = {sumbit:"somevalue"}; // post variable data
obj.func = alert_func;
run_ajax(obj);

첫 번째 코드 블록에서, 당신은 절대 사용하지 않습니다.str매개 변수당신은 다음과 같이 말하려고 했습니까?

testFunc = function(str, callback) {
    $.ajax({
        type: 'POST',
        url: 'http://www.myurl.com',
        data: str,
        success: callback
    });
}

저는 당신의 문제가 함수 객체가 아닌 문자열을 funct하고 있다는 것이라고 생각합니다. (그것이 가능합니까?)

당신이 원하는 것이 무엇인지 100% 확신할 수는 없지만(아마도 오늘은 내 뇌가 느릴 것이다), 여기 당신이 설명하는 것과 유사한 사용의 예가 있습니다.

function GetProcedureById(procedureId)
{
    var includeMaster = true;
    pString = '{"procedureId":"' + procedureId.toString() + '","includeMaster":"' + includeMaster.toString() + '"}';
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        data: pString,
        datatype: "json",
        dataFilter: function(data)
        {
            var msg;
            if (typeof (JSON) !== 'undefined' &&
                    typeof (JSON.parse) === 'function')
                msg = JSON.parse(data);
            else
                msg = eval('(' + data + ')');
            if (msg.hasOwnProperty('d'))
                return msg.d;
            else
                return msg;
        },
        url: "webservice/ProcedureCodesService.asmx/GetProcedureById",
        success: function(msg)
        {
            LoadProcedure(msg);
        },
        failure: function(msg)
        {
            // $("#sometextplace").text("Procedure did not load");
        }
    });
};
/* build the Procedure option list */
function LoadProcedure(jdata)
{
    if (jdata.length < 10)
    {
        $("select#cptIcdProcedureSelect").attr('size', jdata.length);
    }
    else
    {
        $("select#cptIcdProcedureSelect").attr('size', '10');
    };
    var options = '';
    for (var i = 0; i < jdata.length; i++)
    {
        options += '<option value="' + jdata[i].Description + '">' + jdata[i].Description + ' (' + jdata[i].ProcedureCode + ')' + '</option>';
    };
    $("select#cptIcdProcedureSelect").html(options);
};

언급URL : https://stackoverflow.com/questions/2403441/jquery-ajax-pass-success-data-into-separate-function

반응형