ورود

View Full Version : سوال: مشکل در jquery ajax



sky_in_iran
سه شنبه 28 آبان 1392, 14:05 عصر
من دربرنامم به وسیله jquery اطلاعات view و controller ها مو فراخوانی می کنم بعد به وسیله jquery و دستور load اطلاعات در صفحه نمایش داده میشه اما زمانی که در بخش ویرایش اطلاعات فرم رو controllerارسال می کنم خروجی viewاون controllerنمی تونم کنترل کنم و کل صفحه به هم میریزه چطور میشه کاری کرد که view مخصوص یک controller خروجی نده یا خروجی و تو jquery کنترل کنم؟

hakim22
سه شنبه 28 آبان 1392, 18:01 عصر
میتوانید از Return null استفاده کنید. یا اینکه قسمت InsertionMode در کمک Ajax حذف کنید. یا اگر از Ajax خود jQuery استفاده می کنید تنظیمات مربوط به Replace و Insert رو حذف کنید.

sky_in_iran
سه شنبه 28 آبان 1392, 18:55 عصر
Return null که میکنم یک صفحه خالی باز می کنه بعد از submit وارسال اطلاعات و درج در بانک چون تو صفحات از jquery استفاده کردم برگشتش فرم و کاملا بهم میزنه به این خاطر می خوام view کار نکه اینم بگم view هم درست نکردم اما باز

hakim22
سه شنبه 28 آبان 1392, 19:28 عصر
اگر صفحه ی خالی مشاهده می کنید به این معنی است که اسکریپت jquery.unobtrusive.ajax-min.js رو درون View ارجاع نداده اید. در حقیقا همه ی دستورات جیکوئری شما بدون قابلیت ajax اجرا میشوند و به همین دلیل نتیجه مانند Get و Post معمولی و بدون Ajax نمایش داده میشود.

sky_in_iran
سه شنبه 28 آبان 1392, 20:50 عصر
مشکل از اون نیست کد من برای ویرایش این است :

@using (Html.BeginForm("SetadEditSave", "Setad", FormMethod.Post))
{
<fieldset >
<legend class="hText"> ویرایش</legend>
@Html.HiddenFor(model => model[0].Id)
<table border="0" cellpadding="0" cellspacing="0" id="id-form" align="center" dir="rtl">
<tr>
<th valign="top"><h5>نام:</h5></th>
<td colspan="2"><h4>@MvcHtmlString.Create(Html.EditorFor(model => model[0].Name).ToString().Replace("class=\"text-box single-line\"", "class=\"inp-form\""))</h4> </td>
</tr>
<tr>
<th valign="top"></th>
<td><input type="submit" value="Save" id="submit" class="form-submit"/>
</td>
<td><input type="button" value="" id="reset" class="form-reset" />
</td>
</tr>
</table>
</fieldset>
}


بعد از تغییرات حالا نوبته اینه که اطلاعات به view مورد نظر ارسال بشه که همه چیز بهم میرزه
113025
در حالی که باید این و نشون بده
113026
اینم کد controller



public ActionResult SetadInfo()
{
return View(setadInf.Select());
}

hakim22
چهارشنبه 29 آبان 1392, 07:29 صبح
اول : کدی سمت کنترلر که شما قرار دادید مربوط به HttpGet است ولی باید کد HttpPost رو هم قرار بدید.

دوم : دستور Html.BeginForm ربطی به ajax نداره در حقیقت این خروجی هست که باید ببینید. برای کار با ajax باید از کمک ajax.beginForm استفاده کنید.
خروجی شما الان باید از طریق Ajax درون View درج بشه که معمولا از Replace استفاده میشود.
یا اینکه باید یک View جدید بسازید که شامل layout جاری باشد.

sky_in_iran
جمعه 01 آذر 1392, 13:37 عصر
با تشکر از راهنماییتون مشکل حل شد حالا همین مشکل تو grid دارم کدم در زیر است راهنمایی کنید ممنون میشم

@{
var grid = new WebGrid(Model, canPage: true, rowsPerPage: 5,
selectionFieldName: "selectedRow", ajaxUpdateContainerId: "gridContent");
grid.Pager(WebGridPagerModes.NextPrevious);}

<div id="gridContent">
@grid.GetHtml(htmlAttributes: new { id = "gridContent" }, tableStyle: "webGrid",
headerStyle: "header",
columns: grid.Columns(
grid.Column( format: (item) => item.GetSelectLink(item.Id + ""), header: "کد", style: "webGridColumn"),
grid.Column(format: (item) => @Ajax.ActionLink("SetadInfo", "MainPages", new { id = item.Name }, new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "gridContent" }), header: " عنوان", canSort: true, style: "webGridColumn"),
grid.Column("Name","Name")

))
</div>