رفتن به مطلب

ارسال جیسون با متد پست در html به php


arastooms

ارسال‌های توصیه شده

سلام به همه اساتید عزیز 
من یک فایل php ساده در هاستم بار گزاری کردم که 2 مقدار رو با متد post بهش ارسال میکنم ( یک json با دو مقدار) 
و به من یک جیسون برمیگردونه اگر موفقیت آمیز باشه

ارسال من هست 

{"name":"ali","family":"ahmadi"}

و اگر همه چیز درست باشه به من این رو برمیگردونه

{"return":"ok","old":"29"}


حالا قصدم اینه که یه صفحه html بنویسم و رو هاست آپلود کنم با 2 تا ورودی 
اسم
فامیلی 
که این 2 مقدار رو که تایپ میکنم و دکمه ارسال رو میزنم بره به test.php به صورت جیسون داده رو ارسال کنه و جواب رو ببینم 

نکته اینجاست که متد Post  خالی رو بلدم و میتونم ارسال کنم تک تک ولی ارسال یک رشته جیسون رو بلد نیستم و نیاز به راهنمایی شما عزیزان دارم 
ممنون میشم من رو با کد html راهنمایی کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام ارسطوجان،

طبق چیزی که من متوجه شدم شما باید یک فرم در html طراحی کنید با دو ورودی دلخواه و بعد بجای action باید با جاوااسکریپت ورودی ها رو به جیسون تبدیل کنید و بعد با همون جاوااسکریپت پستش کنید به اسکریپت PHP

شیوه ایجاد یک شی در جاوااسکریپت:

var object2 = {"username":"user1","password":"pass1"};

که باید در کد بالا مقادیر pass1 و user1 رو با استفاده از متد document.getElementByClass یا byId و متد InnerHTML بدست بیارید و جایگزاری کنید

شیوه تبدیل شی به جیسون:

var jsonstr = JSON.stringify(object2);

فقط شیوه ارسالش به اسکریپت رو نمیدونم و بررسی هم که کردم به نتیجه ای نرسیدم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام. برای ارسال چرا از json می خواین استفاده کنید؟

ارسال بدون جیسون این شکلی میشه

<!DOCTYPE html>
<html>
<body>

a : <input type="text" id="a"><br>
b : <input type="text" id="b"><br>
<button type="button" onclick="loadDoc()">Request data</button>

<p id="demo"></p>

<script>

var a = document.getElementById("a");
var b = document.getElementById("b");

function loadDoc() {

	av = encodeURIComponent(a.value)
	bv = encodeURIComponent(b.value)
		
	var xhttp = new XMLHttpRequest();
	
	xhttp.onreadystatechange = function() {
		if (this.readyState == 4 && this.status == 200) {
		  document.getElementById("demo").innerHTML = this.responseText;
		}
	};
	
	xhttp.open("POST", "get.php", true);
	xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xhttp.send("a="+av+"&b="+bv);
  
}


</script>

</body>
</html>

در مثال بالا مقدار بازگشتی به عنوان متن ساده چاپ میشه

حالا مقدار بازگشتی اگه json باشه

xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myObj = JSON.parse(this.responseText);
        document.getElementById("demo").innerHTML = myObj.name;
    }
};

دریافت و چاپ اطلاعات ارسالی توسط php

<?php

$a = $_POST['a'];
$b = $_POST['b'];

echo "a=[$a] & b=[$b]";

?>

ساخت و چاپ json در php

<?php

class A{
	public $name ;
	public $age ;
	public $city ;
}

$myObj = new A();

	$myObj->name = "Ali";
	$myObj->age = 30;
	$myObj->city = "New York";

	$myJSON = json_encode($myObj);

	echo $myJSON;
	
?>

کافیه مثال هارو مثلا به این شکل تغییر بدید.

$myObj->name = $_POST['name'];

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اگه می خواین json ارسال کنید

تبدیل json به متن ساده که اقای amin گفتن.

در 2 ساعت قبل، AMiN.M7892 گفته است :

var jsonstr = JSON.stringify(object2);

متن ساده رو با ajax که کدش رو نوشتم ارسال کنید.

سمت php متن ساده رو دریافت کنید.

$Jsonstring = $_POST['Jsonstring'];

با تابع json_decode متن ساده جیسون رو به یک شیئ یا ارایه در php تبدیل کنید و از اون استفاده کنید.

<?php

$json =  $_POST['Jsonstring'];

$obj = json_decode($json);
echo $obj->{'age'};

?>

json-decode

متن json باید حتما استاندارد باشه

اگه در نوشتن کد نهایی مشکل داشتید بگید تا براتون بنویسم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...