как получить возвращаемые значения между функциями jquery и опубликовать запрос jjery ajax на веб-сервис - PullRequest
0 голосов
/ 26 августа 2010

У меня есть следующий код, где код функции адрес геокодирует текстовое значение поля и возвращает геокодированное значение, геокодированное значение сохраняется в примере переменной, как я верну переменную v2 при вызове функции и отправлю сообщение в веб-службу asmx.

<script type="text/javascript">
    $(document).ready(function() {
        $('#SubmitForm').submit(function() {


  var geocoder;
  var map;
   function codeAddress(state) {
    var address = document.getElementById("state").value;
    geocoder.geocode( { 'address': state}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var v2=results[0].geometry.location;
        alert(example);
        var marker = new google.maps.Marker({
            map: map, 
            position: results[0].geometry.location
        });
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
      return v2;
    });


            var businessname = ($("#businessname").val());
            var keyword = ($("#keyword").val());
            var description = ($("#textarea").val());
            var zipcode = ($("#zipcode").val());
            var streetno = ($("#streetno").val());
            var streetname = ($("#streetname").val());
            var state = $('#state :selected').text();
            var telephone = ($("#telephone").val());
            var email = ($("#email").val());
            var username = ($("#username").val());
            var password = ($("#pass").val());
            var repassword = ($("#pass1").val());


            //data: "{'businessname':" + businessname + "'keyword':" + keyword + "}",

            alert(state); 
           var v2=codeAddress(state);
            alert(example);
            var jsonobject = "{\"businessname\":\"" + businessname + "\",\"keyword\":\"" + keyword + "\",\"description\":\"" + description + "\",\"zipcode\":\"" + zipcode + "\",\"streetno\":\"" + streetno + "\",\"streetname\":\"" + streetname + "\",\"state\":\"" + state + "\",\"telephone\":\"" + telephone + "\",\"email\":\"" + email + "\",\"username\":\"" + username + "\",\"password\":\"" + password + "\",\"repassword\":\"" + repassword + "\"}";
            $.ajax({
                type: "POST",
                url: "/BlockSeek/jsonwebservice.asmx/SubmitList",
                data: jsonobject,
                contentType: "application/json; charset=utf-8",
                success: ajaxCallSucceed,
                dataType: "json",
                failure: ajaxCallFailed
            });
        });

        function ajaxCallFailed(error) {
            alert("error");
        }

        function ajaxCallSucceed(response) {
            if (response.d == true) {
                alert(" sucessfully saved to database");
            }
            else {
                alert("not saved to database");
            }
        }




    });
</script>

1 Ответ

0 голосов
/ 26 августа 2010

Вы вызываете метод codeAddress с помощью обратного вызова.Внутри codeAddress, когда вы получаете значение v2, вызывайте функцию обратного вызова, передавая его v2.

codeAddress(state, 
    function(v2) {
        var jsonobject = "{\"businessname\":\"" + businessname/*.. use v2 in buiding jsonobject..*/;
        $.ajax({
            type: "POST",
            url: "/BlockSeek/jsonwebservice.asmx/SubmitList",
            data: jsonobject,
            contentType: "application/json; charset=utf-8",
            success: ajaxCallSucceed,
            dataType: "json",
            failure: ajaxCallFailed
        });
    }
);

function codeAddress(state, callback) {
    var address = document.getElementById("state").value;
    geocoder.geocode(...);
    // ...
    var v2=results[0].geometry.location;
    callback(v2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...