سؤال

$.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 إلى "رسالة نصية" ، يمكن العمل على البيانات التي يتم إرجاعها من الخادم كسلسلة عادية.

نصائح أخرى

  1. نعم ، هذا صحيح ، إنه المتغير الوحيد ، على سبيل المثال ، أنت تقوم بالتحقق isset($_POST['autocomplete']), ، على الرغم من أنه يبدو أنك ترغب في تمرير قيمة مربع النص هنا ، نظرًا لأن الإكمال التلقائي يعتمد عادة على ما كتبته بالفعل.
  2. نعم ، يتم تشغيل هذه الوظيفة عندما تعود الاستجابة ، فإن الوسيطة هي أي بيانات تعود من صفحة PHP الخاصة بك.
  3. من المفترض أن تبدو الاستجابة مثل هذا:
    { 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));
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top