مساعدة في تمرير مجموعة JSON متعددة الأبعاد إلى JQuery AutoCOPTE عبر AJAX

StackOverflow https://stackoverflow.com/questions/2145035

سؤال

أحاول تنفيذ بحث مباشر على موقع الصور الخاص بي باستخدام jQuery والمكون الإضافي التلقائي. كل شيء يعمل عندما أقوم بتحديد البيانات محليًا:

var data = [ {text:'Link A', url:'/page1'}, {text:'Link B', url: '/page2'} ];

ومع ذلك ، عندما أقوم بنقل هذا إلى PHP ، فإن jQuery غير قادر على تحليل النتائج بشكل صحيح. أنا حقًا لست متأكدًا مما يحدث هنا. الكود الحالي الخاص بي أدناه:

<script>
$(document).ready(function(){
var data = '/livesearch'; 
$("#aut_field").autocomplete(data, {
  formatItem: function(item) {
    return item.text;
  }
}).result(function(event, item) {
  location.href = item.url;
});
                });
</script>

ويطبع نص PHP الخاص بي صفيف متعدد الأبعاد بالتنسيق التالي:

{"1":{"text":"Google Website","url":"http:\/\/www.google.com"},
 "2":{"text":"Yahoo Website","url":"http:\/\/yahoo.com"},}

ومع ذلك ، عندما أقوم بتنبيه (item.text) ، يقول المتغير غير المحدد.

إذا قمت بتنبيه (عنصر) أرى السلسلة بأكملها كما تم إخراجها بواسطة PHP.

حاولت اللعب مع eval () لكنني لست متأكدًا من مكان وضعه أو كيفية الحصول على JS لتفسير البيانات فعليًا. شكرا لمساعدتك. يتم تقدير نموذج رمز خاص بتنفيذي.

هل كانت مفيدة؟

المحلول

كما هو موضح بالفعل، استعلامات العرض جميع المهام في القائمة (> 5000 عنصر) وإرجاع جميع العناصر (> 5000) على دفعات مع ترقيم الصفحات.لكي يعمل WebPart الخاص بك، يجب عليك الاستعلام عن أقل من 5000 عنصر ولديه إرجاع أقل من 5000 عنصر أيضا.يجب أيضا أن يتم أيضا فهرسة عمود التصفية.

متحدثا واقعيا، تتضمن خياراتك ما يلي:

  1. إذا كنت تنوي إظهار المهام المعينة للمستخدم الحالي، فقم بإنشاء طريقة عرض مع مرشح معين مع "[ME] وفهرس العمود المعين
  2. إذا كنت ترغب في إظهار المهام لجميع المستخدمين، فقد يكون من الأفضل إظهار المهام غير المكتملة، وفي هذه الحالة تحتاج إلى إنشاء طريقة عرض مع حالة تصفية "لا تساوي" مكتمل وفهرس حقل الحالة.

نصائح أخرى

جرب في هذا النمط PHP الخاص بك:

[
   {"text":"Google Website","url":"http:\/\/www.google.com"},
   {"text":"Yahoo Website","url":"http:\/\/yahoo.com"}
]

ويعيد البرنامج النصي PHP الخاص بك مجموعة متعددة الأبعاد/هدف مزج. إذا أصرت (تقوم بتفجير var الخاص بك بعدة "نص:" amd "url ؛")

[[{"text":"Google Website","url":"http:\/\/www.google.com"}],[{"text":"Yahoo Website","url":"http:\/\/yahoo.com"}]]

أفضل:

var x=[["Google Website","http:\/\/www.google.com"],["Yahoo Website","http:\/\/yahoo.com"]];

إذا كنت ترغب في القفز إلى موقع Yahoo: var url = x [1] [1] ؛

أو:

var x={"Google_Website":"http:\/\/www.google.com","Yahoo_Website":"http:\/\/yahoo.com"};

إذا كنت ترغب في القفز إلى google_website: var url = x ["google_website"] ؛

نصيحتي: زيارة أدخل الوصف الرابط هنا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top