سؤال

هل من الممكن استدعاء دالة من PHP باستخدام onsubmit من جافا سكريبت ؟ إذا كان شخص ما يمكن أن تعطيني مثالا على كيف يمكن ان يتم ذلك ؟

function addOrder(){
    $con = mysql_connect("localhost", "146687", "password");
    if(!$con){
        die('Could not connect: ' . mysql_error())
    }

    $sql = "INSERT INTO orders ((user, 1st row, 2nd row, 3rd row, 4th row)
    VALUES ($session->username,1st variable, 2nd variable, 3rd variable, 4th variable))";

    mysql_query($sql,$con)
    if(mysql_query($sql,$con)){
        echo "Your order has been added";
    }else{
        echo "There was an error adding your order to the databse: " . mysql_error();
    }
}

هذا هو وظيفة أنا يريد أن الدعوة.في ترتيب النظام ، نوع في مقدار كل عنصر تريد ضرب تقديم و يجب أن إضافة أمر إلى طاولة المفاوضات.

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

المحلول

لا يمكنك استدعاء وظيفة PHP من جافا سكريبت ...

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

... ولكن يمكنك الحصول على النتيجة من برنامج نصي PHP خارجي

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

وهذه العملية هي ما نسميه AJAX ، وانه من الاسهل بكثير للقيام بذلك مع جيدة أداة من نفسك. إلقاء نظرة على مسج ، انها قوية وسهلة الاستعمال مكتبة جافا سكريبت التي بنيت في المساعدين AJAX.

ومثال مع مسج (العميل):

$.ajax({
   type: "POST", // the request type. You most likely going to use POST
   url: "your_php_script.php", // the script path on the server side
   data: "name=John&location=Boston", // here you put you http param you want to be able to retrieve in $_POST 
   success: function(msg) {
     alert( "Data Saved: " + msg ); // what you do once the request is completed
   }

نصائح أخرى

ويبدو أنك تريد AJAX .

وهذا هو كبير جدا موضوع للحصول على إجابة واحدة، ولكن ينبغي أن تحصل على الذهاب.

وأساسا، فإن جافا سكريبت إرسال طلب HTTP لسيناريو PHP على الخادم الخاص بك ومن ثم تفعل شيئا مع الاستجابة. JSON وربما شيء سترغب في معرفة أيضا.

انها بشكل غير مباشر من الممكن استدعاء دالة PHP باستخدام جافا سكريبت.وغيرها من الناس قد سبق ذكره, كنت تريد أن تفعل بعض نوع من الطلب هذا لا يعني بالضرورة أن يكون اياكس.يمكن أن يكون متزامن.دون أن يعرفوا بالضبط ما كنت تحاول إنجاز ، وهنا ما أود أن أقترح:

  • إرفاق معالج الحدث إلى نموذج تقديم خيار (أو استخدام معيار تقدم إذا كنت لا تنوي استخدام Ajax)
  • حزمة أي المعايير التي سوف تحتاج إلى أن تنتقل إلى وظيفة PHP سواء في وظيفة أو في سلسلة الاستعلام من عنوان الصفحة.
  • النار على طلب (سواء بشكل متزامن أو عن طريق تقديم)
  • في السيناريو PHP الذي هو الهدف من طلب الانسحاب من المعلمات من $ _ وظيفة أو $ _ الحصول على.
  • استدعاء وظيفة PHP التي تحتاج مع المعلمات.
  • يعود الصدى رد وتحليل ذلك كما يلزم بمجرد طلب يكمل.

مرة أخرى, هذا هو قليلا العامة ولكن ذلك هو السؤال.نأمل أن هذا يعطي نوعا من الاتجاه.

والأقرب أنت ذاهب لتحصل عليها ستكون xajax حيث سيتيح لك التفاف وظيفة PHP في استدعاء AJAX . لقد استعملت لا بأس به قبل أن أبدأ العمل مع الإطار زند وجدت أنه من الصعب جدا لتنفيذ بطريقة OO.

ومع xajax أن تكتب وظيفة PHP أن يفعل كل منطق العادية ثم بإرجاع كائن ObjectResponse التي تعالج المتصفح من خلال AJAX (مربعات التنبيه، وتغير HTML، CSS، الخ). تسجل الدالة مع xajax ثم xajax سوف بصق بعض جافا سكريبت في القسم HTML الخاص بك.

في HTML الخاص بك أنت فقط ندعو إلى أن وظيفة جافا سكريبت أن xajax ولدت ويستغرق بالباقي من خلال AJAX.

وأنت تريد أن تفعل شيئا مثل:

<form action="add_order.php" method="POST" id="add_order_form">
<!-- all of your form fields -->
<input type='submit' value='Add Order'>
</form>

<script type="text/javascript">
$("#add_order_form").submit(function() {
    var action = $("#add_order_form").attr("action");
    var data = $("#add_order_form").serialize();
    $.post(action, data, function(json, status) {
        if(status == 'success') {
            alert(json.message);
        } else {
            alert('Something went wrong.');
        }
    }, "json"); 
    return false;
});
</script>

وبعد ذلك يكون لديك ملف PHP اسمه add_order.php مع شيء من هذا القبيل:

$success = 0;
$con = mysql_connect("localhost", "146687", "password");
if(!$con) {
    $message = 'Could not connect to the database.';
} else {
    // SANITIZE DATA BEFORE INSERTING INTO DATABASE
    // LOOK INTO MYSQL_REAL_ESCAPE_STRING AT LEAST,
    // PREFERABLY INTO PREPARED STATEMENTS
    $query_ok = mysql_query("INSERT INTO `orders` ....");
    if($query_ok) {
        $success = 1;
        $message = "Order added.";
    } else {
        $message = "Unable to save information";
    }
}

print json_encode(array('success' => $success, 'message' => $message));

لهذا الجمال في العمل سيكون لديك للذهاب إلى مسج على شبكة الإنترنت، تحميل البرنامج، وتشمل مسج ملف شبيبة.

وأنا لم تختبر ما سبق ولكن ينبغي لها أن تعمل. حظا سعيدا.

عذرا، سؤالك الأساسي أيضا. اعتمادا على ما PHP ظيفة كنت ترغب في الاتصال على formsubmit اياكس لن يساعدك. هل أنت على علم من الأساسي (clientside / جانب الخادم) الاختلافات بين PHP و JavaScript؟

نعم، آخر تعليمي كبير وسهل لتعلم اياكس هو:

http://24ways.org/2005/easy-ajax-with- نموذج /

والنموذج هو آخر شيء أوصي إذا كنت طعاما ذهبت لابعد الحدود مع المشروع الخاص بك وتحتاج إلى عودة الكثير من الوظائف.

http://www.prototypejs.org/

وحظا سعيدا!

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