مساعدة في تمرير مجموعة JSON متعددة الأبعاد إلى JQuery AutoCOPTE عبر AJAX
-
23-09-2019 - |
سؤال
أحاول تنفيذ بحث مباشر على موقع الصور الخاص بي باستخدام 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 عنصر أيضا.يجب أيضا أن يتم أيضا فهرسة عمود التصفية.
متحدثا واقعيا، تتضمن خياراتك ما يلي:
- إذا كنت تنوي إظهار المهام المعينة للمستخدم الحالي، فقم بإنشاء طريقة عرض مع مرشح معين مع "[ME] وفهرس العمود المعين
- إذا كنت ترغب في إظهار المهام لجميع المستخدمين، فقد يكون من الأفضل إظهار المهام غير المكتملة، وفي هذه الحالة تحتاج إلى إنشاء طريقة عرض مع حالة تصفية "لا تساوي" مكتمل وفهرس حقل الحالة.
نصائح أخرى
جرب في هذا النمط 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"] ؛
نصيحتي: زيارة أدخل الوصف الرابط هنا