{"id":57,"date":"2010-02-18T21:53:38","date_gmt":"2010-02-18T21:53:38","guid":{"rendered":"http:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/"},"modified":"2010-02-18T21:53:38","modified_gmt":"2010-02-18T21:53:38","slug":"php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations","status":"publish","type":"post","link":"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/","title":{"rendered":"PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations"},"content":{"rendered":"<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><b><font size=\"3\"><font face=\"Calibri\">PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations<o:p><\/o:p><\/font><\/font><\/b><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">There are already guides available for building a general <\/font><a href=\"http:\/\/www.geekpedia.com\/tutorial213_Creating-a-UPS-Shipping-Calculator.html\"><font size=\"3\" color=\"#800080\" face=\"Calibri\">UPS shipping calculator form<\/font><\/a><font size=\"3\"><font face=\"Calibri\">, and with a little knowledge of PHP, one can modify the sample to have the shipping calculated on one&rsquo;s own shopping cart.<span>&nbsp; <\/span>The problem with such a static form is that it lists all shipping services that UPS provides anywhere.<span>&nbsp; <\/span><\/font><\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span class=\"style1\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&lt;select name=&quot;selService&quot;&gt;<\/font><\/span><\/span><span style=\"font-family: 'Courier New'\"><br \/><font size=\"3\"><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;1DM&quot;&gt;Next Day Air Early AM&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;1DA&quot;&gt;Next Day Air&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;1DP&quot;&gt;Next Day Air Saver&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;2DM&quot;&gt;2nd Day Air AM&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;2DA&quot;&gt;2nd Day Air&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;3DS&quot;&gt;3 Day Select&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;GND&quot;&gt;Ground&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;STD&quot;&gt;Canada Standard&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;XPR&quot;&gt;Worldwide Express&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;XDM&quot;&gt;Worldwide Express Plus&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;XPD&quot;&gt;Worldwide Expedited&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;WXS&quot;&gt;Worldwide Saver&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&lt;\/select&gt;<o:p><\/o:p><\/span><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt\" class=\"MsoNormal\"><span class=\"style1\"><o:p><font size=\"3\" face=\"Calibri\">&nbsp;<\/font><\/o:p><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt\" class=\"MsoNormal\"><span class=\"style1\"><font size=\"3\"><font face=\"Calibri\">This, however, makes it difficult for the user.<span>&nbsp; <\/span>If I am mailing a package within the United States, and I select &ldquo;Worldwide Saver&rdquo;, UPS will respond with an error message that this service is not available between the specified locations.<span>&nbsp; <\/span>To make the form more usable, the select should only list the services that are actually available.<span>&nbsp; <\/span>The question for the developer is &#8212; how do I know which of the services are actually available, given the origin and destination locations?<o:p><\/o:p><\/font><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><span class=\"style1\"><o:p><font size=\"3\" face=\"Calibri\">&nbsp;<\/font><\/o:p><\/span><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><span class=\"style1\"><font size=\"3\" face=\"Calibri\">This article discusses how to request the list of available rates from UPS and how to read the response.<span>&nbsp; <\/span>Once this is accomplished, someone with who knows PHP and AJAX can easily put the code in the form to have the select list generated automatically.<\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><b><font size=\"3\"><font face=\"Calibri\">Sending Request to UPS<o:p><\/o:p><\/font><\/font><\/b><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">Just as in the basic shipping calculator, the URL to request information from UPS is <\/font><a href=\"http:\/\/www.ups.com\/using\/services\/rave\/qcostcgi.cgi\"><font size=\"3\" face=\"Calibri\">http:\/\/www.ups.com\/using\/services\/rave\/qcostcgi.cgi<\/font><\/a><font size=\"3\" face=\"Calibri\">.<span>&nbsp; <\/span>Here, however, since the request is to get a list of available rates, the parameter &ldquo;10_action&rdquo; should be set to &ldquo;4&rdquo;.<\/font><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">The other required parameters are:<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">accept_UPS_license_agreement &ndash; must be set to &ldquo;yes&rdquo;<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">14_origCountry &ndash; the country the package is being sent from<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">15_origPostal &ndash; the zip code (postal code) the package is being sent from<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">origCity &ndash; the city the package is being sent from<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">23_weight &ndash; required, but for our purposes, you can use any number.<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><font size=\"3\"><font face=\"Calibri\">47_rateChart &ndash; required, can be any of the following: <span class=\"style1\">Regular+Daily+Pickup, OP_WEB, OP_PHONE, One+Time+Pickup, Letter+Center, or Customer+Counter.<span>&nbsp; <\/span>Not important which one.<\/span><\/font><\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">48_container &ndash; Since this is also required but not significant for this query, I use the value &ldquo;00&rdquo;.<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">49_residential &ndash; 01 (residential) or 02 (commercial) required but not significant<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">13_product required but can be anything of 3 letters.<span>&nbsp; <\/span>I use &ldquo;qqq&rdquo;.<span>&nbsp; <\/span>The purpose of our request is to get the available values when you pass this to the price request, so by definition you never know what it should be.<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">19_destPostal &ndash; the zip code (postal code) the package is being sent to<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">20_destCity &ndash; the city the package is being sent to<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">22_destCountry &ndash; the country the package is being sent to<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt\" class=\"MsoNormal\"><o:p><font size=\"3\" face=\"Calibri\">&nbsp;<\/font><\/o:p><\/p>\n<p style=\"margin: 0in 0in 0pt\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">Hence, we can build a function to request the list of available rates as follows:<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt\" class=\"MsoNormal\"><o:p><font size=\"3\" face=\"Calibri\">&nbsp;<\/font><\/o:p><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&lt;?php<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">function request_ups_available_services($orig_city, $orig_postal, $orig_country, $dest_city, $dest_postal, $dest_country)<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">{<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp;<\/span>$ups_request=&#8217;http:\/\/ww.ups.com\/using\/services\/rave\/qcostcgi.cgi &#8216;<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;?accept_UPS_license_agreement=yes&#8217;<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;&amp;10_action=4&#8242;<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;&amp;23_weight=1&#8242;<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;&amp;48_container=00&#8242;<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;&amp;49_residential=01&#8242;<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;&amp;13_product=qqq&#8217;<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;&amp;47_rateChart=Regular+Daily+Pickup&#8217;<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;&amp;origCity=&#8217;.$orig_city<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;&amp;14_origCountry=&#8217;.$orig_country<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;&amp;15_origPostal=&#8217;.$orig_postal<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;&amp;19_destPostal=&#8217;.$dest_postal.<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;&amp;20_destCity=&#8217;.$dest_city<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp; <\/span>.&#8217;&amp;22_destCountry=&#8217;.$dest_country;<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\"><span>&nbsp;<\/span>return file_get_contents($ups_request);<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">}<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">?&gt;<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><b><o:p><font size=\"3\" face=\"Calibri\">&nbsp;<\/font><\/o:p><\/b><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><b><font size=\"3\"><font face=\"Calibri\">Reading UPS response<o:p><\/o:p><\/font><\/font><\/b><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">The response string should look something like this:<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">UPSOnLine4%1DA%50665%US%88000%US%106%1%43.39%0.00%43.39%End of Day%<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">4%2DA%50665%US%88000%US%206%1%18.99%0.00%18.99%End of Day%<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">4%3DS%50665%US%88000%US%306%1%13.59%0.00%13.59%End of Day%<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">4%GND%50665%US%88000%US%006%1%8.21%0.00%8.21%End of Day%<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><o:p><font size=\"3\">&nbsp;<\/font><\/o:p><\/span><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">How do we read the string and translate it into a list of services?<span>&nbsp; <\/span>There may be an official method, but this works for me.<span>&nbsp; <\/span>All services are 3 characters, and from the general form, we have a list of all available services:<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span class=\"style1\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&lt;select name=&quot;selService&quot;&gt;<\/font><\/span><\/span><span style=\"font-family: 'Courier New'\"><br \/><font size=\"3\"><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;1DM&quot;&gt;Next Day Air Early AM&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;1DA&quot;&gt;Next Day Air&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;1DP&quot;&gt;Next Day Air Saver&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;2DM&quot;&gt;2nd Day Air AM&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;2DA&quot;&gt;2nd Day Air&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;3DS&quot;&gt;3 Day Select&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;GND&quot;&gt;Ground&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;STD&quot;&gt;Canada Standard&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;XPR&quot;&gt;Worldwide Express&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;XDM&quot;&gt;Worldwide Express Plus&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;XPD&quot;&gt;Worldwide Expedited&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&nbsp;&nbsp;&nbsp;&lt;option value=&quot;WXS&quot;&gt;Worldwide Saver&lt;\/option&gt;<\/span><br \/><span class=\"style1\">&lt;\/select&gt;<o:p><\/o:p><\/span><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><o:p><font size=\"3\" face=\"Calibri\">&nbsp;<\/font><\/o:p><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">Hence, we split the response by the separator character (&ldquo;%&rdquo;) and check each entry if it is a service type.<\/font><\/p>\n<p style=\"margin: 0in 0in 10pt\" class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">Here is a function that takes the response from UPS and generates a list of available services.<\/font><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&lt;?php<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">function generate_service_list_from_ups_response($ups_response)<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">{<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">$master_ups_service_list=array(<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&#8216;1DM&#8217;=&gt;&#8217;Next Day Air Early AM&#8217;,<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&#8216;1DA&#8217;=&gt;&#8217;Next Day Air&#8217;,<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&#8216;1DP&#8217;=&gt;&#8217;Next Day Air Saver&#8217;,<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&#8216;2DM&#8217;=&gt;&#8217;2nd Day Air AM&#8217;,<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&#8216;2DA&#8217;=&gt;&#8217;2nd Day Air&#8217;,<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&#8216;3DS&#8217;=&gt;&#8217;3 Day Select&#8217;,<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&#8216;GND&#8217;=&gt;&#8217;Ground&#8217;,<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&#8216;STD&#8217;=&gt;&#8217;Canada Standard&#8217;,<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&#8216;XPR&#8217;=&gt;&#8217;Worldwide Express&#8217;,<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&#8216;XDM&#8217;=&gt;&#8217;Worldwide Express Plus&#8217;,<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&#8216;XPD&#8217;=&gt;&#8217;Worldwide Expedited&#8217;,<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">&#8216;WXS&#8217;=&gt;&#8217;Worldwide Saver&#8217;<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">);<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">$ups_service_list=array();<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">$ups_server_list=split(&#8216;%&#8217;, $ups_response);<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">foreach($ups_server_list as $this_service)<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">{<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 0.5in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">if(isset($master_ups_service_list[$this_service]))<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt 1in; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">$ups_service_list[$this_service]=$master_ups_service_list[$this_service];<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">}<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; text-indent: 0.5in; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">return $ups_service_list;<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">}<o:p><\/o:p><\/font><\/span><\/p>\n<p style=\"margin: 0in 0in 0pt; line-height: normal; tab-stops: 428.0pt\" class=\"MsoNormal\"><span style=\"font-family: 'Courier New'\"><font size=\"3\">?&gt;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/font><o:p><\/o:p><\/span><\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations There are already guides available for building a general UPS shipping calculator form, and with a little knowledge of PHP, one can modify the sample to have the shipping calculated on one&rsquo;s own shopping cart.&nbsp; The problem with such a &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations&#8221;<\/span><\/a><\/p>\n\n\n","protected":false},"author":375,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[4,9,10,5,6,11,7,8],"class_list":["post-57","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-ajax","tag-calculator","tag-dynamic","tag-fischer","tag-php","tag-shipping","tag-ups","tag-yirmiyahu","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations - Yirmi&#039;s World of Web Widgets by Yirmiyahu Fischer<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations - Yirmi&#039;s World of Web Widgets by Yirmiyahu Fischer\" \/>\n<meta property=\"og:description\" content=\"PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations There are already guides available for building a general UPS shipping calculator form, and with a little knowledge of PHP, one can modify the sample to have the shipping calculated on one&rsquo;s own shopping cart.&nbsp; The problem with such a &hellip; Continue reading &quot;PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/\" \/>\n<meta property=\"og:site_name\" content=\"Yirmi&#039;s World of Web Widgets by Yirmiyahu Fischer\" \/>\n<meta property=\"article:published_time\" content=\"2010-02-18T21:53:38+00:00\" \/>\n<meta name=\"author\" content=\"yirmi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"yirmi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/2010\\\/02\\\/18\\\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/2010\\\/02\\\/18\\\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\\\/\"},\"author\":{\"name\":\"yirmi\",\"@id\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/#\\\/schema\\\/person\\\/3ad2fc75c4041622134d8f0f14a2102e\"},\"headline\":\"PHP\\\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations\",\"datePublished\":\"2010-02-18T21:53:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/2010\\\/02\\\/18\\\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\\\/\"},\"wordCount\":1316,\"commentCount\":1,\"keywords\":[\"AJAX\",\"calculator\",\"dynamic\",\"Fischer\",\"PHP\",\"shipping\",\"UPS\",\"Yirmiyahu\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/2010\\\/02\\\/18\\\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/2010\\\/02\\\/18\\\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\\\/\",\"url\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/2010\\\/02\\\/18\\\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\\\/\",\"name\":\"PHP\\\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations - Yirmi&#039;s World of Web Widgets by Yirmiyahu Fischer\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/#website\"},\"datePublished\":\"2010-02-18T21:53:38+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/#\\\/schema\\\/person\\\/3ad2fc75c4041622134d8f0f14a2102e\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/2010\\\/02\\\/18\\\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/2010\\\/02\\\/18\\\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/2010\\\/02\\\/18\\\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP\\\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/#website\",\"url\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/\",\"name\":\"Yirmi&#039;s World of Web Widgets by Yirmiyahu Fischer\",\"description\":\"Blog of a PHP Web Programmer\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/#\\\/schema\\\/person\\\/3ad2fc75c4041622134d8f0f14a2102e\",\"name\":\"yirmi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/wp-content\\\/uploads\\\/avatars\\\/375\\\/8c2adaf748317e659d83f249c32af044-bpfull.jpg\",\"url\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/wp-content\\\/uploads\\\/avatars\\\/375\\\/8c2adaf748317e659d83f249c32af044-bpfull.jpg\",\"contentUrl\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/wp-content\\\/uploads\\\/avatars\\\/375\\\/8c2adaf748317e659d83f249c32af044-bpfull.jpg\",\"caption\":\"yirmi\"},\"url\":\"https:\\\/\\\/jobshuk.com\\\/yirmi\\\/author\\\/yirmi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations - Yirmi&#039;s World of Web Widgets by Yirmiyahu Fischer","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/","og_locale":"en_US","og_type":"article","og_title":"PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations - Yirmi&#039;s World of Web Widgets by Yirmiyahu Fischer","og_description":"PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations There are already guides available for building a general UPS shipping calculator form, and with a little knowledge of PHP, one can modify the sample to have the shipping calculated on one&rsquo;s own shopping cart.&nbsp; The problem with such a &hellip; Continue reading \"PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations\"","og_url":"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/","og_site_name":"Yirmi&#039;s World of Web Widgets by Yirmiyahu Fischer","article_published_time":"2010-02-18T21:53:38+00:00","author":"yirmi","twitter_card":"summary_large_image","twitter_misc":{"Written by":"yirmi","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/#article","isPartOf":{"@id":"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/"},"author":{"name":"yirmi","@id":"https:\/\/jobshuk.com\/yirmi\/#\/schema\/person\/3ad2fc75c4041622134d8f0f14a2102e"},"headline":"PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations","datePublished":"2010-02-18T21:53:38+00:00","mainEntityOfPage":{"@id":"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/"},"wordCount":1316,"commentCount":1,"keywords":["AJAX","calculator","dynamic","Fischer","PHP","shipping","UPS","Yirmiyahu"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/","url":"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/","name":"PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations - Yirmi&#039;s World of Web Widgets by Yirmiyahu Fischer","isPartOf":{"@id":"https:\/\/jobshuk.com\/yirmi\/#website"},"datePublished":"2010-02-18T21:53:38+00:00","author":{"@id":"https:\/\/jobshuk.com\/yirmi\/#\/schema\/person\/3ad2fc75c4041622134d8f0f14a2102e"},"breadcrumb":{"@id":"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jobshuk.com\/yirmi\/2010\/02\/18\/php-ajax-shipping-calculator-for-ups-getting-a-list-of-the-available-shipping-services-between-locations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jobshuk.com\/yirmi\/"},{"@type":"ListItem","position":2,"name":"PHP\/AJAX Shipping Calculator for UPS: getting a list of the available shipping services between locations"}]},{"@type":"WebSite","@id":"https:\/\/jobshuk.com\/yirmi\/#website","url":"https:\/\/jobshuk.com\/yirmi\/","name":"Yirmi&#039;s World of Web Widgets by Yirmiyahu Fischer","description":"Blog of a PHP Web Programmer","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jobshuk.com\/yirmi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/jobshuk.com\/yirmi\/#\/schema\/person\/3ad2fc75c4041622134d8f0f14a2102e","name":"yirmi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jobshuk.com\/yirmi\/wp-content\/uploads\/avatars\/375\/8c2adaf748317e659d83f249c32af044-bpfull.jpg","url":"https:\/\/jobshuk.com\/yirmi\/wp-content\/uploads\/avatars\/375\/8c2adaf748317e659d83f249c32af044-bpfull.jpg","contentUrl":"https:\/\/jobshuk.com\/yirmi\/wp-content\/uploads\/avatars\/375\/8c2adaf748317e659d83f249c32af044-bpfull.jpg","caption":"yirmi"},"url":"https:\/\/jobshuk.com\/yirmi\/author\/yirmi\/"}]}},"_links":{"self":[{"href":"https:\/\/jobshuk.com\/yirmi\/wp-json\/wp\/v2\/posts\/57","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jobshuk.com\/yirmi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jobshuk.com\/yirmi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jobshuk.com\/yirmi\/wp-json\/wp\/v2\/users\/375"}],"replies":[{"embeddable":true,"href":"https:\/\/jobshuk.com\/yirmi\/wp-json\/wp\/v2\/comments?post=57"}],"version-history":[{"count":0,"href":"https:\/\/jobshuk.com\/yirmi\/wp-json\/wp\/v2\/posts\/57\/revisions"}],"wp:attachment":[{"href":"https:\/\/jobshuk.com\/yirmi\/wp-json\/wp\/v2\/media?parent=57"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jobshuk.com\/yirmi\/wp-json\/wp\/v2\/categories?post=57"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jobshuk.com\/yirmi\/wp-json\/wp\/v2\/tags?post=57"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}