سؤال

أحاول إرسال البيانات إلى موقع كعكة (MVC) من خلال $ .Post (). أدناه هو الكود

$('#testReq').click(function () {
    console.log('Button Works');
    $.post('http://play.anthonylgordon.com/usersessions/store/', { data: 'test7' }, function (data) {
        //data contains the json object retrieved.
        console.log(data.status);
    }, "json");
})

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

<?php
    class UsersessionsController extends AppController {
        var $name = 'Usersessions';
        var $helpers = array('Html', 'Form','Ajax');
        var $components = array('RequestHandler');


        function store()
        {
           Configure::write('debug', 0);
           $this->autoRender = false;
           echo 'hello';
            if ($this->params['url']['data'])
            {
                $this->data['Usersession']['data'] = $this->params['url']['data'];
                $this->Usersession->Save($this->data);
                echo 'Success';
            }   
        }
    }
?>

كما ترون أنني وضعت "مرحبا" قبل أن يقوم بأي تقييم. يجب أن أكون قادرا على رؤية ذلك في وحدة التحكم الخاصة بي لكنني لا أميل. لقد جربت هذه الطريقة مع الحصول عليها ورأيت الاستجابة "مرحبا". الذي يغادرني إلى الاستنتاج الذي لا يمكنك إرسال مجال عبر البيانات عبر $.post. وبعد الطريقة الوحيدة التي يبدو أنها تعمل هي getJSON() ما لم يكن شخص ما يمكن أن يثبت لي خطأ.

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

المحلول

لا يمكنك تنفيذ طلبات Ajax المجال العادية. تحتاج إلى استخدام jsonp. وهذا يعمل فقط مع الحصول على طلبات (ذلك لأن مسج حقن script علامة دوم من أجل تنفيذ الطلب و script يمكن للعلامة فقط استخدام الحصول على جلب جافا سكريبت).

نصائح أخرى

إذا كنت ترغب في أن تكون قادرا على طلب طلبات عبر المجال، فستحتاج إلى تطبيق وكيل HTTP على نطاقك مما يجعل طلبات HTTP من شأنه أن يجعل طلبات HTTP نيابة عنك عبر الأداة المساعدة / المكتبة جانب الخادم مثل Curl أو Apache httpclient أو شيء ما.

تعديل: JSONP هو الحل، لكنني لن أوصي به إلا إذا كنت بحاجة فقط إلى إجراء الحصول على طلبات (لأن هذا كل ما يعمل). jsonp أيضا ليس بالضرورة الراحة، خاصة في قضيتك حيث تحتاج إلى تقديم طلب بعد. إذا كان المنشور يرضي دلالات المورد الخاص بك وكيف تنوي التعامل معها، والتحول للحصول على فقط لاستخدام JSONP يشعر بشعور القبيح بالنسبة لي.

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