سؤال

لدي برنامج نصي لتحديث جدول قاعدة البيانات. أحتاج إلى إعادة صفيف JSON وتحديث بعض الجداول باستخدام jQuery.

نصي PHP الخاص بي:

$update = mysql_query("UPDATE PLD_SEARCHES SET STATUS = 1, TOTAL_RESULTS = ".$scrapper->getTotalResults().",RESULTS = $resultCounter WHERE ID = ".$searchId);
$output = array("status"=>"COMPLETED","results"=>$resultCounter,"totalResults"=>$scrapper->getTotalResults());
echo json_encode($output);

رمز jQuery:

$("button").live("click", function(event){
                    event.preventDefault();
                    $.getJSON("startsearch.php",{ searchId: $(this).val() }, function(data){
                        alert(data[0].status);
                    });

الآن ... المشكلة هي أنه إذا استخدمت $.post("startsearch.php",{ searchId: $(this).val() }, function(data)) يتم تنفيذ البرنامج النصي وأحصل على تنبيه لطيف مع القيمة غير المحددة. إذا قمت بإضافة المعلمة "JSON" ، فلن يتم تنفيذ البرنامج النصي بعد الآن. حاولت استخدام getjson ولكن مرة أخرى نفس المشكلة.

أي شخص لديه أي أفكار؟ أنا يائس ... لقد كان هذا يزعجني لمدة أسبوع تقريبًا وما زلت لم أتمكن من حلها.

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

المحلول

في ملف PHP الخاص بك ، تأكد من تعيين نوع المحتوى الصحيح:

header("Content-type: application/json; charset=utf-8");

بحيث يمكن jQuery بشكل صحيح eval الرد على كائن JSON.

نصائح أخرى

يمكنك الوصول إلى بيانات الاستجابة الخاصة بك على النحو التالي:

alert(data.status);
alert(data.results);
alert(data.totalResults);

يرجى عدم استخدام ALERT أو تثبيت Firebug في Firefox أو تمكين وحدة التحكم JavaScript في Chrome أو Safari. بعد ذلك يمكنك استخدامه console.log(data);

أظن أن البيانات ليست صفيفًا. إلقاء نظرة أيضًا على كل () exmaple على مستندات jQuery http://docs.jquery.com/ajax/jquery.getjson

حسنًا ، أنا أثق json2.js لتحليل بيانات JSON التي تم إرجاعها من طلب AJAX. يمكنك تنزيله من http://json.org. توفر هذه المكتبة طريقة أفضل لتحليل أي سلسلة ، وسوف ترمي استثناء إذا لم تكن اللدغة في JSON.

أنا دائما أكتب طلبي من AJAX مثل هذا:

$.post(URL,
  { PARAM },
  function(data){
    try {
      var r = JSON.parse(data);
      //this for your code above
      alert (r.status); //should be 'COMPLETED'
    }
    catch (e) {
      //data is not in json format, or there are another exception in try block
      //do something about it
      alert('Exception occured, please check the data!');
    }
});

عند معالجة JSON ، ستصبح الصفيف في PHP عضوًا متغيرًا في JSON. لذلك إذا كان في PHP الخاص بك هو $output['status'], ، ثم في JSON ، سيكون ذلك r.status.

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