مساعدة في فهم jQuery $ .post - ث/ رمز عينة
سؤال
$.post('testeUpdate.php', 'autocomplete',
function(dadosResposta) {
$('#ns-nome').val(dadosResposta.nsName);
$('#ns-endereco').val(dadosResposta.nsAddress);
},
"json");
أحاول أن أفهم هذا. لذا ، ووجود رابط مرجعي $ $ .post بالقرب مني:
1) يتم إرسال طلب النشر إلى testeupdate.php ، ثم ، يمكننا تمرير سلسلة تسمى "الإكمال التلقائي". دقيق؟
السؤال رقم 1) تمرير طلب نشر مع هذه السلسلة ، يعني أنه يمكننا لاحقًا ، على سبيل المثال ، معالجة هذا الطلب على مشروط من خلال الإشارة على وجه التحديد إلى: $ _post ['explete'] ؛ ؟
2)في وقت لاحق ، لدينا وظيفة رد الاتصال "ON" على معلمة ، dadosreposta. دقيق؟
السؤال 2)هذا dadosresposta هو شيء قد يأتي من البرنامج النصي جانب الخادم الخاص بنا؟ هل هذه حجة لها البيانات التي نتلقاها؟
3) لذلك ، على النجاح ، ما نريد القيام به هو: ملء بعض عناصر الإدخال مع بعض القيم. Val (dadosresposta.nsname) ؛
السؤال (س) 3)هل هذه "تدوين DOT" وسيلة للوصول إلى البيانات على تنسيق JSON - أم أن هذه طريقة للمشي على DOM كما نفعل عادة؟ هل هذا هو الدور الذي يلعبه JSON هنا؟
شكرا جزيلا مقدما يا ميم
المحلول
1) نعم ، يمكن الوصول إلى الإكمال التلقائي باستخدام PHP بهذه الطريقة. ($ _post ['explete']). ولكن بخلاف حقيقة أنه سيظهر صحيحًا على ISSET () - لن يكون له أي بيانات.
2) نعم Dadosresposta هو الاستجابة التي ستعود من الخادم. إذا قمت بتعيين المعلمة الأخيرة كـ JSON على طلب $ .post الخاص بك ، فيمكن استخدامها أصليًا في JavaScript ككائن JSON. لعرض البيانات بهذه الطريقة ، في PHP يمكنك استخدامها json_encode ()
3) يمكنك أن تفعل كما الرجاء الحصول على بياناتك. لكن تدوين DOT لن يعمل إلا إذا تم تنسيق JSON بشكل صحيح. المرجع: json.org
4) تدوين DOT هو وسيلة للوصول إلى البيانات التي يتم إرجاعها بتنسيق JSON ، لا علاقة لها بـ DOM. إذا قمت بتغيير الجزء الأخير من $ .post إلى "رسالة نصية" ، يمكن العمل على البيانات التي يتم إرجاعها من الخادم كسلسلة عادية.
نصائح أخرى
- نعم ، هذا صحيح ، إنه المتغير الوحيد ، على سبيل المثال ، أنت تقوم بالتحقق
isset($_POST['autocomplete'])
, ، على الرغم من أنه يبدو أنك ترغب في تمرير قيمة مربع النص هنا ، نظرًا لأن الإكمال التلقائي يعتمد عادة على ما كتبته بالفعل. - نعم ، يتم تشغيل هذه الوظيفة عندما تعود الاستجابة ، فإن الوسيطة هي أي بيانات تعود من صفحة PHP الخاصة بك.
- من المفترض أن تبدو الاستجابة مثل هذا:
{ nsName: 'name', nsAddress: 'address' }
إنه يستخدم هذه القيم لإلغاء هذين الحقولين ، وبالتالي فإن التدوين النقطي هو الحصول على القيم من الاستجابة, ، JSON هو مجرد جعل هذا أكثر نظافة :)
لقد استخدمت الكود الخاص بك على JSfiddle وحاولت بناء ما لديك ، كما ترون ، لقد أرسلت بيانات إلى وظيفة JSON ECHO على JSFIDDLE ، والتي استجابت مثل هذا (ربما ... إذا كانت PHP):
echo json_encode(array("post_response"=>$_POST));
كما ترون ، قمت بتغيير postdata لمطابقة الاستجابة التي كنت تطلبها ، على جانب الخادم ، عادة ما يبدو الأمر مثل هذا في سيناريو عادي:
if(isset($_POST['somedata']))
{
//do stuff... you know, whatever
echo json_encode(array("nsName" => $someString1,"nsAddress" => $someString2));
}