مشاكل في تمرير jQuery $ .post متغير كمعلمة
-
21-09-2019 - |
سؤال
أحاول إرسال اسم: زوج القيمة إلى برنامج نصي PHP باستخدام كائن $ .post في jQuery حيث يكون كل من الاسم والقيمة متغيرات. لقد أرسلت المتغيرات إلى وحدة التحكم في FF ، لذلك أعلم أنه يتم ضبطها بشكل صحيح ، ولكن عندما أشاهد الرؤوس التي يتم إرسالها ، يتم تقييم متغير القيمة فقط بشكل صحيح ، ويتم إرسال الاسم كسلسلة حرفية من المتغير اسم. هذه هي الوظيفة فيها بالكامل:
$(document).ready(function() {
$('#formS form fieldset > input').blur(function() {
if($(this).val()=='' && $(this).prev().is('img')) {
$(this).prev().remove();
return;
}
if((($(this).is('#formS form fieldset > input[id*=mail]')) ||
($(this).is('#formS form fieldset > input[id*=sername]'))) &&
($(this).val()!="")) {
var email_field = $(this);
if(!$(this).prev().is('img')){
$('<img src="" alt="" style="width: 16px; height: 16px;" />').insertBefore(this);
}
var type = ($(this).is('input[id*=sername]'))?'username':'email';
var value = $(this).val();
$.post('checkemail.php5', {type:value}, function(data) {
if(data == "free") {
email_field.prev().attr('src','/images/greentick.png').attr('alt','available');
} else if(data == "taken") {
email_field.prev().attr('src','/images/redcross.png').attr('alt','taken');
} else {
console.log('hmmm'+data);
}
});
}
});
});
لذا ، فإن الرؤوس التي يتم إرسالها هي السلسلة الحرفية يكتب, ، وأيا كان القيمة يقيم. أي شخص لديه أي أفكار لماذا؟
المحلول
لأن بناء الجملة {} يأخذ مجموعة من الاسم: القيمة حيث تصبح الأسماء الخاصية على الكائن. هذا حرفي ولا يمكن أن يكون متغيرًا ، كما ترى. استخدم هذا:
var params = {};
params[type] = value;
وتمرير المعاملات بدلاً من {type: value}
نصائح أخرى
لست متأكدًا من مشكلتك ، فهي ليست واضحة بالنسبة لي. أنا لا أعرف الكثير من المعرفة في PHP أيضًا ولكن قد ترغب في تجربتها على هذا النحو:
var type = ($ (this) .is ('input [id*= sername]')؟ 'username': 'email' ؛ var value = $ (this) .val () ؛ var data = type+"="+value ؛
$ .post ('checkemail.php5' ، البيانات ، الدالة (البيانات) {.......
الافضل،
بالضبط ما كنت أبحث عنه فالكون الظلام ، شكرا!
كان من الصعب العثور على هذا الحل ، راجع للشغل. أفترض أن معظم الأشخاص يقومون بتسلسل بيانات النموذج فقط وإرسال ذلك باعتباره POST PARAM ، ولكن في بعض الحالات ، من الجيد استخدام الإقران المتغير- كان المتغير يعمل