مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

alinazarisanj

عضویت از 1393/10/23

نحوه استفاده از مقدار خروجی در جی کوئری

  • چهارشنبه 26 آبان 1395
  • 15:37
تشکر میکنم

سلام

من یه تابع ایجکسی ایجاد کردم که یه مقدار string رو برمیگردنه، حالا میخوام وقتی که از این تابع در صفحاتم استفاده کنم مقدار undefined برمیگردونه.

<script>
        function GetValueFromXml(text) {
            $.ajax({
                url: '@Url.Action("GetValueFromXml", "Tools")?text=' + text,
                type: "POST"
            }).success(function (data) {
                return data;
            }).error(function (xhr) {
                return text;
            });
        }
    </script>

من میتونم یه id برای div یا span ویا ....تعریف کنم و مقدار رو به اونها نسبت بدم ولی این راه حل برای کار من مناسب نیست.

<script>
        function GetValueFromXml(text, boxId) {
            $.ajax({
                url: '@Url.Action("GetValueFromXml", "Tools")?text=' + text,
                type: "POST"
            }).success(function(data) {
                $("#" + boxId).html(data);
            }).error(function(xhr) {
                $("#" + boxId).html(text);
            });
        }
    </script>

نحوه استفاده برای روش اول:

this.renderWidget = function () {
        var html = "<p><i>" + window.GetValueFromXml("Filter by type of place") + '</i></p>\
                    <select style="width:150px;" class="grid-filter-type customerslist form-control">\
                    </select>';
        this.container.append(html);
    };

نحوه استفاده برای روش دوم:

this.renderWidget = function () {
        var html = "<p><i id='filterPlace'>" + window.GetValueFromXml("Filter by type of place", "filterPlace") + '</i></p>\
                    <select style="width:150px;" class="grid-filter-type customerslist form-control">\
                    </select>';
        this.container.append(html);
    };

ممنون میشم برای روش اول راهنماییم کنیم.

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 26 آبان 1395
  • 16:13

کد اکشن را قرار دهید

خروجی اکشن از چه نوعی هست ؟

کاربر سایت

alinazarisanj

عضویت از 1393/10/23

  • چهارشنبه 26 آبان 1395
  • 16:19

کد اکشن:

[HttpPost]
        public virtual ActionResult GetValueFromXml(string text)
        {
            string value = text;
            string culture = CmsLocalizer.GetLanguageSession();
            switch (culture)
            {
                case "fa":
                    if (CmsLocalizer.XmldocDefault.XPathSelectElement(@"/Language/Item[Text='" + text + "']/Translate") != null)
                        value = CmsLocalizer.XmldocDefault.XPathSelectElement(@"/Language/Item[Text='" + text + "']/Translate").Value;
                    break;

                case "en":
                    if (CmsLocalizer.Xmldoc.XPathSelectElement(@"/Language/Item[Text='" + text + "']") != null)
                        value = CmsLocalizer.Xmldoc.XPathSelectElement(@"/Language/Item[Text='" + text + "']").Value;
                    break;

                default:
                    if (CmsLocalizer.Xmldoc.XPathSelectElement(@"/Language/Item[Text='" + text + "']/Translate") != null)
                        value = CmsLocalizer.Xmldoc.XPathSelectElement(@"/Language/Item[Text='" + text + "']/Translate").Value;
                    break;
            }

            return Json(value, JsonRequestBehavior.DenyGet);
        }

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 26 آبان 1395
  • 16:21

به شکل زیر امتحان کنید

<script>
        function GetValueFromXml(text) {
            $.ajax({
                url: '@Url.Action("GetValueFromXml", "Tools")?text=' + text,
                type: "POST"
            }).success(function (data) {
                return data.d;
            }).error(function (xhr) {
                return text;
            });
        }
    </script>

کاربر سایت

alinazarisanj

عضویت از 1393/10/23

  • چهارشنبه 26 آبان 1395
  • 16:27

مشکل در این قسمته که وقتی تابع صدا زده میشه تا بیاد خروجی رو برگردونه به قسمت مورد نظر چون مدت زمانش طولانی میشه برای دفعه اول undefined برمیگردونه وبعدش جواب صحیح رو برمیگردونه ولی دیگه نمیتونه برا جواب قبلی جایگزینش کنه.

برای همین وقتی از روش دوم استفاده میشه جواب رو جایگزین کل html میکنه.

من برا این مشکل و روش اول یه جواب میخواستم.

ممنون

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 26 آبان 1395
  • 16:35

دلیل طولانی بودن جواب چیست ؟

در کد چیز خاصی دیده نمیشه

شما چرا مستقیم در خود تابع المان مورد نر را مقدار دهی نمیکنید ؟

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)