Cách lấy dữ liệu ajax trong php trên cùng một trang?

Câu hỏi này có vẻ hoàn toàn ngu ngốc, nhưng giả sử tôi có một trang PHP với một số xử lý biểu mẫu ở trên cùng bằng php và một biểu mẫu html bên dưới với hành động gửi đến cùng một trang và phương thức đăng. Làm cách nào để tôi nhận được kết quả qua ajax, tức là. gửi biểu mẫu cho chính bạn mà không cần làm mới trang, nếu điều đó hợp lý?

Giải pháp tốt nhất

Có vẻ như bạn đang hỏi về những điều cơ bản của Ajax phải không?

Đặt jQuery vào trang của bạn, sau đó làm điều gì đó như

$(document).ready(function(){ $('#submit_button').click(function(){ var something='value to send to PHP'; $.post('name_of_page.php',{"a_var":something},function(data){ /* do something with the data you received back*/ },'json'); }); });

Sau đó, trong trang PHP của bạn, hãy thiết lập để xử lý một bài đăng hoặc đầu ra HTML bình thường

<?php if($_POST['a_var']){ $result=do_something($_POST['a_var']); echo json_encode($result); exit; } //if there was no POST value, it continues to here <html> This is the rest of your page. You'd have the form and the above javascript and so on here. </html>

Giải pháp liên quan

Javascript – Cách để jQuery thực hiện một yêu cầu Ajax đồng bộ, thay vì không đồng bộ

Từ tài liệu jQuery. bạn chỉ định tùy chọn không đồng bộ là sai để nhận yêu cầu Ajax đồng bộ. Sau đó, cuộc gọi lại của bạn có thể đặt một số dữ liệu trước khi chức năng mẹ của bạn tiếp tục

Đây là mã của bạn sẽ trông như thế nào nếu được thay đổi như đề xuất

beforecreate: function (node, targetNode, type, to) { jQuery.ajax({ url: '//example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value), success: function (result) { if (result.isOk == false) alert(result.message); }, async: false }); }

Javascript – Cách quản lý yêu cầu chuyển hướng sau lệnh gọi jQuery Ajax

Tôi đã đọc câu hỏi này và triển khai phương pháp đã được nêu liên quan đến việc đặt mã trạng thái HTTP phản hồi thành 278 để tránh trình duyệt xử lý các chuyển hướng một cách minh bạch. Mặc dù điều này hoạt động, tôi hơi không hài lòng vì nó hơi hack

Sau khi tìm hiểu kỹ hơn, tôi đã bỏ cách tiếp cận này và sử dụng JSON. Trong trường hợp này, tất cả phản hồi đối với yêu cầu AJAX đều có mã trạng thái 200 và phần thân của phản hồi chứa đối tượng JSON được tạo trên máy chủ. Sau đó, JavaScript trên máy khách có thể sử dụng đối tượng JSON để quyết định những gì nó cần làm

tôi đã có một vấn đề tương tự như của bạn. Tôi thực hiện một yêu cầu AJAX có thể có 2 phản hồi. một chuyển hướng trình duyệt đến một trang mới và một thay thế biểu mẫu HTML hiện có trên trang hiện tại bằng một biểu mẫu mới. Mã jQuery để làm điều này trông giống như

$.ajax({ type: "POST", url: reqUrl, data: reqBody, dataType: "json", success: function(data, textStatus) { if (data.redirect) { // data.redirect contains the string URL to redirect to window.location.href = data.redirect; } else { // data.form contains the HTML for the replacement form $("#myform").replaceWith(data.form); } } });

Đối tượng JSON "dữ liệu" được xây dựng trên máy chủ để có 2 thành viên. data.redirect và data.form. Tôi thấy cách tiếp cận này tốt hơn nhiều

Chào mọi người. Tôi có mã có thể gọi trang PHP một cách hiệu quả bằng AJAX  (không có JQuery). PHP phản hồi tốt với tiếng vang. Đây là javaScript gọi PHP để làm mới trang không cần phải thực hiện

 

function deleteCategory() { var e= document.getElementById("dropDown1"); var var1 = e.options[e.selectedIndex].text; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = alerta() { if (this.readyState == 4 && this.status == 200) { document.getElementById("insert").innerHTML = xmlhttp.responseText; } }; xmlhttp.open("GET", "deleteRow.php?q=" + var1 , true); xmlhttp.send(); }

Làm cách nào để gọi một hàm PHP trên cùng một trang trong khi vẫn giữ nguyên AJAX ở trên

 

Trân trọng,

Joshua

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

gw1500se

Đăng ngày 20 tháng 12 năm 2020

gw1500se

  • Các thành viên
    • 1k
    • 3
  • Vị trí. Georgia, Hoa Kỳ

    • Chia sẻ

Đăng ngày 20 tháng 12 năm 2020

Không chắc chắn những gì bạn đang yêu cầu. Tất cả điều này được thực hiện ở phía máy khách để JavaScript có thể kiểm soát những gì được hiển thị. Gọi một hàm PHP bằng Ajax không thay đổi bất cứ điều gì trên trang đó trừ khi JavaScript thực hiện thay đổi. Hãy nhớ rằng PHP chỉ ở phía máy chủ và không trạng thái. JavaScript là phía máy khách và có thể kiểm soát hoàn toàn trang hiện tại. Do đó, một chức năng JavaScript/Ajax khác sẽ không ảnh hưởng đến chức năng này

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Barand

Đăng ngày 20 tháng 12 năm 2020

Barand

  • người điều hành
    • 23. 4k
    • 358
  • Vị trí. Cheshire, Vương quốc Anh
  • Tuổi. 73
  • quyên góp cho tôi

    • Chia sẻ

Đăng ngày 20 tháng 12 năm 2020

Có một ví dụ ở đây về xử lý yêu cầu ajax trong cùng một trang

 

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

JoshEir

Đăng ngày 20 tháng 12 năm 2020

JoshEir

  • Các thành viên
    • 30
  • Vị trí. Virginia
  • Tuổi. 47

  • Tác giả

    • Chia sẻ

Đăng ngày 20 tháng 12 năm 2020 (đã chỉnh sửa)

Bạn có thể không đặt được php trong tập lệnh javascript, nhưng bạn chắc chắn có thể đặt chúng trên cùng một trang. Tôi đang tự hỏi làm thế nào để gọi một php trên cùng một trang bằng AJAX chứ không phải JQuery. Tôi đã thấy điều này sớm hơn và mất liên kết

 

Được chỉnh sửa vào ngày 20 tháng 12 năm 2020 bởi JoshEir
thêm văn bản

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

maxxd

Đăng ngày 20 tháng 12 năm 2020

maxxd

  • guru
    • 1. 5k
    • 32
  • Vị trí. bắc Carolina

    • Chia sẻ

Đăng ngày 20 tháng 12 năm 2020 (đã chỉnh sửa)

Bạn không cần jQuery để chạy AJAX, bạn chỉ cần JavaScript. Vì vậy, hãy chuyển sang hiện đại với tìm nạp hoặc sử dụng XMLHttpRequest (hoặc ActiveXObject). Nếu bạn muốn thực hiện nhiều lệnh gọi AJAX từ cùng một trang, không gì có thể ngăn cản bạn - hãy chọn trình kích hoạt và gọi một mục tiêu PHP khác cho yêu cầu. Nếu bạn muốn trở nên phức tạp hơn, hãy chuyển tham số 'hành động' cho PHP của bạn và quyết định hành động sẽ chạy dựa trên điều đó -

let resp = fetch(url, { method: 'get', body: JSON.stringify({ 'action': 'doSomething', 'data': ['data','more','etc'] }) });

 

function doSomething(){ switch($_GET['action']){ case 'doSomething': doSomething($_GET['data']); break; case 'doSomethingElse': doSomethingElse($_GET['data']); break; } }

(mã chưa được kiểm tra, chỉ là một ý tưởng cơ bản)

Đã chỉnh sửa ngày 20 tháng 12 năm 2020 bởi maxxd

  • 1

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

JoshEir

Đăng ngày 21 tháng 12 năm 2020

JoshEir

  • Các thành viên
    • 30
  • Vị trí. Virginia
  • Tuổi. 47

  • Tác giả

    • Chia sẻ

Đăng ngày 21 tháng 12 năm 2020 (đã chỉnh sửa)

Hừm. tôi đã tìm thấy nội dung này về javascript và php cùng nhau

<?php // Call PHP function from javascript with parameters function myphpfunction($x, $y){ $z=$x+$y; return 'The sum is: '.$z; } ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Untitled Document</title> <script type="text/javascript"> alert("<?php echo myphpfunction(4,90)?>"); </script> </head> <body> </body> </html>

Bây giờ, có vẻ như thao tác này không làm mới trang,  Tôi tự hỏi liệu nó có tốt như AJAX không?

Và maxxd, Có vẻ như quá trình tìm nạp sử dụng một URL, tôi có đúng không?

 

Josh

Tôi đoán điều này sẽ chỉ dành cho sự trở lại

Được chỉnh sửa vào ngày 21 tháng 12 năm 2020 bởi JoshEir

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

JoshEir

Đăng ngày 21 tháng 12 năm 2020

JoshEir

  • Các thành viên
    • 30
  • Vị trí. Virginia
  • Tuổi. 47

  • Tác giả

    • Chia sẻ

Đăng ngày 21 tháng 12 năm 2020 (đã chỉnh sửa)

Tôi đoán điều này sẽ làm việc

 

chức năng onButtonPress()

{

}

Tôi không biết mình đang nghĩ gì, nó không thể thay thế cho AJAX

 

Được chỉnh sửa vào ngày 21 tháng 12 năm 2020 bởi JoshEir

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

maxxd

Đăng ngày 21 tháng 12 năm 2020

maxxd

  • guru
    • 1. 5k
    • 32
  • Vị trí. bắc Carolina

    • Chia sẻ

Đăng ngày 21 tháng 12 năm 2020

Không có AJAX trong bất cứ thứ gì bạn vừa đăng. Tôi cũng cho rằng đó là một ví dụ vì không có gì mà một mình JavaScript không thể tự xử lý được. PHP sẽ phân tích cuộc gọi tới myphpfunction() trên máy chủ trước khi trang được gửi tới trình duyệt - JavaScript sẽ là thế này

________số 8_______

Nếu đó là tất cả những gì bạn cần, thì tốt thôi. Nếu bạn cần gọi myphpfunction() với các giá trị khác nhau dựa trên lựa chọn của người dùng và bạn không muốn tải lại toàn bộ trang, bạn sẽ phải sử dụng JavaScript và AJAX

  • 1

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

JoshEir

Đăng ngày 21 tháng 12 năm 2020

JoshEir

  • Các thành viên
    • 30
  • Vị trí. Virginia
  • Tuổi. 47

  • Tác giả

    • Chia sẻ

Đăng ngày 21 tháng 12 năm 2020 (đã chỉnh sửa)

Điều này sẽ được gọn gàng

tài liệu. getElementById("chèn"). innerHTML =

Chủ đề