PDA

View Full Version : ارسال مقدار به دیتابیس در layout



sara_t
چهارشنبه 10 خرداد 1396, 09:38 صبح
سلام دوستان من در لایوت یک اینپوت و یک باتن دارم که میخام توسط Ajax مقدار اینپوت رو زمانیکه بر روی باتن کلیک میشه به سرور post کنم.ولی برنامه اصلن جواب نمیده؟ممنون میشم اشکال این کد رو بگید.

کد لایوت:

<div >
<input id="EmailInput" type="text">
<button id="btnaddemail" type="button">ثبت ایمیل</button>
</div>
<script type="text/javascript">
$(function () {
$(".btnaddemail").click(function () {
var email = $("#EmailInput").val();
$.ajax({
url: "/Home/AddEmail",
data: { Email: email },
type: "Post",
success: function () {
alert('Successfully connected to the server');
},
error: function () {
alert('Something went wrong');
}
});
});
});
</script>
@RenderSection("scripts", false)


این هم از کنترلر home:

public ActionResult AddEmail(string Email )
{
db.AddEmail(Email);
return MessageBox.Show("ایمیل شما با موفقیت ثبت شد", MessageType.Success);
}

_behnam_
چهارشنبه 10 خرداد 1396, 18:01 عصر
سلام.
دلیلش این هستش که شما رویداد کلیک باتن رو میخواید از طریق ID بدید اما در کدهای جی کوئری به جای # از . استفاده کردید.
کد زیر

$(".btnaddemail").click(function () {

باید بشه

$("#btnaddemail").click(function () {

sara_t
پنج شنبه 11 خرداد 1396, 17:19 عصر
ممنون

با توجه به اینکه این کد در layout نوشته شده و من نمیتونم از htmlhelper ها استفاده کنم.چطور میتونم سمت کلاینت چک کنم که فرمتی که در اینپوت باکس نوشته میشه فرمت درست ایمیل باشه؟ممنون

_behnam_
پنج شنبه 11 خرداد 1396, 17:38 عصر
با استفاده از عبارات منظم در javascript میتونید درستی فرمت ایمیل رو بررسی کنید.
تابعی که زیر قرار میدم یک ایمیل رو میگیره و فرمتش رو بررسی میکنه اگه درسا بود true و در غیر این صورت false رو برمیگردونه

function checkMail(emailAddress)
{
var emailRegex = new RegExp(/^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$/i);
var valid = emailRegex.test(emailAddress);
if (!valid) {
alert("Invalid e-mail address");
return false;
} else
return true;
}

فرمت regex رو خودم ننوشتم ، بررسی کنید و درصورت نیاز اصلاح کنید.

sara_t
پنج شنبه 11 خرداد 1396, 22:17 عصر
کد تکمیل شده رو قرار میدم که دوستان دیگه هم خاستند استفاده کنن


<script type="text/javascript">
$(function () {
$("#btnaddemail").click(function () {
var email = $("#EmailInput").val();
function checkMail(emailAddress) {
var emailRegex = /^([a-zA-Z0-9_.+-])+\@@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
var valid = emailRegex.test(emailAddress);
if (!valid) {
alert("Invalid e-mail address");
return false;
} else
return true;
}
if (checkMail(email)) {
$.ajax({
url: "/Home/AddEmail",
data: { Email: email },
type: "Post",
success: function () {
alert('Successfully connected to the server');
},
error: function () {
alert('Something went wrong');
}
});
}
});
});
</script>

_behnam_
پنج شنبه 11 خرداد 1396, 22:46 عصر
البته یه موضوعی رو بگم ک جنبه بهتر شدن کدها بشه.
بهتر هست که تابع checkMail رو بیرون از محدوده
$("#btnaddemail").click(function () {
تعریف کنید. که اگه خواستید جای دیگه هم استفاده کنید نخواید تعریف مجدد انجام بدید.